编辑:
在尝试了这两种方法之后,我发现使用本地护照策略由于某种原因,总是排除方法对我不起作用,不知道为什么。
所以,这就是我最终使用的:
Blogs.findOne({_id: id})
.populate("user", "-password -someOtherField -AnotherField")
.populate("comments.items.user")
.exec(function(error, result) {
if(error) handleError(error);
callback(error, result);
});
“始终排除”方法没有什么问题,由于某种原因它不能与护照一起使用,我的测试告诉我,实际上,在需要时实际上已排除/包含了密码。include always方法的唯一问题是,我基本上需要遍历对数据库的每次调用,并且要排除很多工作量的密码。
经过几个很好的回答,我发现有两种方法可以做到:“总是包含并有时排除”和“总是包含并有时排除”?
两者的一个示例:
包括总是但有时不包括的示例:
Users.find().select("-password")
要么
Users.find().exclude("password")
总是不讲究,但有时包括示例:
Users.find().select("+password")
但您必须在架构中定义:
password: { type: String, select: false }