【发布时间】:2015-10-27 19:55:02
【问题描述】:
我在 mongoose 中填充一个用户集合,如果用户使用社交帐户注册,我想设置一个标志。所以我选择了 populate 中的那些字段。但出于安全考虑,我不想通过它作为回应。所以我使用lean() 将其转换为普通对象并将值设置为null。但是,一旦为特定用户设置了值null,那么它将为该user_id 设置该值为空。如何设置它们null 或如何隐藏它们以防止响应。
Pins.find(condition)
.limit(limit)
.sort({time: -1})
.populate({
path: 'user_id',
select: '_id name pic twitter_id fb_id',
options: { lean: true}
})
.lean()
.exec(function(err, data) {
if(data){
var flag = 0
async.eachSeries(data, function(v, callback1) {
if(v.user_id.twitter_id || v.user_id.fb_id ){
v.socialaccount=1
v.user_id.fb_id =''
v.user_id.twitter_id =''
}else{
v.socialaccount=0
v.user_id.fb_id =''
v.user_id.twitter_id =''
}
callback1()
},function(){
console.log(data)
callback(data)
})
} else {
callback(data)
}
})
提前致谢
【问题讨论】:
-
到目前为止,我的理解是,您有一个 Pins 集合,其中有一个引用用户集合的用户 ID。并且您希望用户做出的 Pin 在 twitter 或 facebook 上具有与您的数据库相关联的社交帐户的响应。我说的对吗?
-
是的。我只想为此设置一个标志。但我不想在回复中传递 fb_id 或 twitter_id
-
您可以使用 lodash...从结果对象数组中删除 'user_id'。
-
但如果我删除 user_id 所有填充的用户详细信息将被删除,但我需要其他详细信息,如姓名、图片
标签: node.js mongoose mongoose-populate