猫鼬会过滤掉额外的属性吗?

5 mongoose mongodb node.js

我即将开发一个新应用程序。我们决定使用 mongo 作为我们的数据库来快速原型设计,并使用 mongoose 作为 orm。我的问题是,在宣布新车型之后。当我尝试保存新模型时,它会过滤掉多余的键吗?例如。假设一个模型有一个属性name。模型会忽略额外的键吗?

let user = new User({
  name:"bob",
  randomKey: ""
}); 

user.save();
Run Code Online (Sandbox Code Playgroud)

原因是因为我希望能够在快速控制器中执行此操作。

let user = new User({ ...req.body});
user.save();
Run Code Online (Sandbox Code Playgroud)

或者在模式有很多 props 的情况下。

not*_*est 2

是的,mongoose不保存架构定义中不存在的字段。

学生模式:-

var Student = mongoose.model('Student', { name: String, event : String });
Run Code Online (Sandbox Code Playgroud)

发布请求:-

{
    "name" : "extra fields",
    "event" : "from postman",
    "event2" : "not on schema"
}
Run Code Online (Sandbox Code Playgroud)

收藏:-

event2属性(不是学生模式的一部分)尚未保存。

{
    "_id" : ObjectId("5901d1d830fa36f020e88ea7"),
    "name" : "extra fields",
    "event" : "from postman",
    "__v" : 0
}
Run Code Online (Sandbox Code Playgroud)

Mongoose 架构保存问题