精益()里面填充猫鼬
lean() inside populate in mongoose
我正在 mongoose 中填充用户集合,如果用户使用社交帐户注册,我想设置一个标志。所以我选择 populate 中的字段。但出于安全考虑,我不想通过它作为回应。所以我使用 lean()
将它转换为普通对象并将值设置为 null
。但是,一旦为特定用户设置了值 null
,它就会为该 user_id
设置该值 null。如何设置它们 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);
}
})
我已经映射了查找查询中的引脚集合,这样您就可以设置您的 socialaccount 标志,并且可以将不需要的属性设置为 undefined
但是我不确定您是否可以使用 _.omit(pin.user_id,'twitter_id')
而不是 pin.user_id.twitter_id = undefined
。需要测试一下!
结果图钉集合现在将具有您想要的其他用户属性。
希望对您有所帮助:)
我正在 mongoose 中填充用户集合,如果用户使用社交帐户注册,我想设置一个标志。所以我选择 populate 中的字段。但出于安全考虑,我不想通过它作为回应。所以我使用 lean()
将它转换为普通对象并将值设置为 null
。但是,一旦为特定用户设置了值 null
,它就会为该 user_id
设置该值 null。如何设置它们 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);
}
})
我已经映射了查找查询中的引脚集合,这样您就可以设置您的 socialaccount 标志,并且可以将不需要的属性设置为 undefined
但是我不确定您是否可以使用 _.omit(pin.user_id,'twitter_id')
而不是 pin.user_id.twitter_id = undefined
。需要测试一下!
结果图钉集合现在将具有您想要的其他用户属性。 希望对您有所帮助:)