我收到用户ID和版本列表。然后我应该返回更新的用户(他们的版本增加了)。有没有什么方法可以使用数据库中的未知id作为数组用户的索引但没有for循环。下面我尝试了类似的东西,但它不起作用:
var users = req.body
var ids = Object.keys(users)
User.find({
_id: { $in: ids },
__v: { $gt: users['$_id']}
})
.select('firstName lastName email avatarPath')
.exec(function (err, result) {
if (err) {
logger.error('User 500 ' + err)
return res.status(500).json({
code: config.errorCode.status500.code,
message: config.errorCode.status500.message
})
}
return res.json({
data: result
})
})
答案 0 :(得分:0)
您可能需要从数据库中获取所有用户:
User.find({
_id: { $in: ids },
})...
然后代替:
return res.json({
data: result
})
你可以这样做:
return res.json({
data: result.filter(user => user.__v > users[user._id])
});
或者您可以尝试构建查询对象:
let query = {$or: ids.map(id => ({_id: id, __v: {$gt: users[id] }})};
并在查询中使用它:
User.find(query)...