瘦()里面填充mongoose

我正在使用mongoose填充用户集合,并且希望在用户使用社交帐户注册时设置标志。 所以我select填充的领域。 但由于安全问题,我不想通过它作为回应。 所以我使用lean()将它转换为纯对象,并将值设置为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.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, pins) { if(pins){ pins = _.map(pins,function(pin) { //Setting the flag for social account pin.socialaccount = (pin.user_id.twitter_id || pin.user_id.fb_id ); //Omitting the twitter_id and fb_id fields from user_id object pin.user_id.twitter_id = undefined; pin.user_id.fb_id = undefined; return pin; }); return res.send(pins); } }) 

我已经映射查找查询pins集合,以便您可以设置您的socialaccount标志,并可以设置不需要的属性undefined

然而,我不知道如果你可以使用_.omit(pin.user_id,'twitter_id')而不是pin.user_id.twitter_id = undefined需要testing!

结果pins集合现在将有其他用户属性,你想要的。 希望能帮助到你 :)