2017-03-21 21 views
0

我收到用戶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

您可能需要要麼得到所有用戶從數據庫中:

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)... 
+0

非常感謝您!我嘗試了兩種方式,但第二個解決了我的問題。 – andzaOs

相關問題