当使用 Mongoose 并查询数据库时,默认情况下会选择所有字段,并且我必须明确告诉 Mongoose 我不想选择哪些字段,例如,如果我不想要该字段user
我应该做:
var schema = new Schema(
{
insertedAt: {type: String},
tags: {type: String},
user: {type:Object, select:false},
connectedIds: {type:Array}
}
问题是,字段可能会在 API 开发人员(我)不知情的情况下添加到数据库中。
是否可以告诉 Mongooseonly选择明确设置的字段?
有一种解决方法可以始终仅选择您的Schema
。您要做的就是获取具有架构的所有字段paths
财产并将其传递给您select()
声明,如:
var fields = Object.keys(yourSchema.paths).join(' ');
//and when execute a query
YourModel.find({}).select(fields).exec(callback);
这样,即使有人向您的对象添加新字段,它也永远不会显示。缺点是您必须为每个查询执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)