我需要遍历对象ID的列表,找到一个用户,然后修改json对象并返回它。
我调查了bluebird,但是下面的代码无法执行我想要的代码。似乎在返回它之后修改了json对象。
我试图返回user["test"] = "lol"
,但只返回“test”的值,而我需要整个更新的json。
Promise.map(['5781635026d6fad4486d81e9', '578296e31029e27b4ea53e9d'], function(i) {
return User.findOneAsync({
_id: i
}).then(function(user) {
user["test"] = "lol";
return user;
});
}).then(function(array) {
res.send(array);
})
是否有一个优雅的解决方案?
最佳答案
您可以采用的一种简单方法是对查询中的ID数组使用 $in
运算符,然后应用 lean()
方法以返回普通的JS对象,因为Mongoose documents不允许添加属性。
看看这个例子:
User.find({ "_id": { "$in": ['5781635026d6fad4486d81e9', '578296e31029e27b4ea53e9d'] } })
.lean()
.exec()
.then(function(docs) {
var users = docs.map(function(user) {
user["test"] = "lol";
return user;
});
res.send(users);
})