我使用findAndModify
,它可以正常使用。
这是我的架构
var userSchema = new mongoose.Schema({
_id : ObjectId,
username : String,
}, {
safe : true
});
如果我插入username : 100
,username
中的Schema
会更改Double
。
我可以在更新前检查元素,仅在username
为String
时才更新吗?
答案 0 :(得分:3)
不要被Mongoose愚弄,它只是一个“帮助者”(尽管我的感觉主要是增加了混乱)。
了解MongoDB本身非常重要。 MongoDB没有架构。在使用之前,您甚至不需要声明集合,例如在一个新启动的mongodb上,第一个命令:db.bla.insert({"Name":"john"});
正常工作。然后,db.bla.insert({"xf":1456});
也可以正常工作,即使它与第一个文档完全不同。
因此,MongoDB无法根据某种模式验证您的对象,而且不必。问题是您的代码是否可以应对。在大多数情况下,拥有严格的架构是有意义的。执行架构必须由您的应用程序代码完成,不过我相信Mongoose offers a helper, doc.validate()
。