我想对两个模式使用一个集合 例如: 数据库中的文档:
{
"name":"John",
"position":"CEO"
}
模式User
:
{
"name" : String
}
模式Employee
:
{
"name" : String,
"position" : String
}
尽管如此,当在结果中选择一个用户(User.findById()
)时,我仍然可以看到文档中的所有字段,即使未在架构中定义。
我根本不想透露简化模型中的某些字段,因此select: false
并不是我想要的……
另外,我想防止保存任何未在架构中列出的字段。
是否可以通过这种方式定义模式?
或者我错了,select:false
正是我想要的? :-)
我正在使用Mongoose 5.0.14
,但是如果有帮助的话,更新到最新版本也不是问题。
我看到了问题How to select a single field in MongoDB?,但是我希望ODM替我做这个。
答案 0 :(得分:0)
尝试一下。 :)
var fields = Object.keys(yourSchema.paths).join(' ');
//and when execute a query
User.find({}).select(fields).exec(callback);
答案 1 :(得分:0)
在您的模式中尝试
MySchema.pre('find', function() {
this.select(fileds);
});