【发布时间】:2016-07-15 00:03:54
【问题描述】:
我需要遍历一个对象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);
})
有没有一个优雅的解决方案?
【问题讨论】:
-
请显示
array和user的内容。在代码中,您已经展示了array将是一个包含返回的user对象的数组。除了 JSON 是一个字符串之外,您还在谈论 JavaScript 对象。 -
该数组只包含未经修改的用户对象。
-
user在user["test"] = "lol";之后的内容是什么?在user["test"] = "lol";之后直接放置一个console.dir(user);。 -
它是没有“test”属性的同一个用户对象。
-
console.dir(Object.isFrozen(user));和console.dir(Object.isExtensible(user));向您展示了什么?
标签: javascript node.js mongodb mongoose bluebird