使用FastAPI与MongoDB和实现安全认证
1. 使用Motor与MongoDB数据库通信
1.1 定义模型
首先,需要定义一个 id
字段,其类型为 PyObjectId
。这是一个自定义类型,能使 ObjectId
与Pydantic兼容。将该类作为该字段的默认工厂。 alias
参数是Pydantic的一个选项,它允许在序列化时更改字段的名称。例如,在 MongoBaseModel
实例上调用 dict
方法时,标识符将设置在 _id
键上,这是MongoDB期望的名称。
另外,添加 Config
子类并设置 json_encoders
选项。默认情况下,Pydantic不识别 PyObjectId
类型,通过该选项可以将自定义类型与一个用于序列化的函数进行映射,这里将其转换为字符串。
# 示例代码,假设在models.py中
from pydantic import BaseModel
from bson.objectid import ObjectId
class PyObjectId(ObjectId):
@classmethod
def __get_validators__(cls):
yield cls.validate
@classm