Javascript 需要修改json并在aync查找操作中返回
我需要浏览对象ID列表,找到一个用户,然后修改json对象并返回它 我已经研究了bluebird,但是下面的代码并没有按照我希望的方式执行。似乎修改json对象是在返回它之后完成的 我试图返回Javascript 需要修改json并在aync查找操作中返回,javascript,node.js,mongodb,mongoose,bluebird,Javascript,Node.js,Mongodb,Mongoose,Bluebird,我需要浏览对象ID列表,找到一个用户,然后修改json对象并返回它 我已经研究了bluebird,但是下面的代码并没有按照我希望的方式执行。似乎修改json对象是在返回它之后完成的 我试图返回user[“test”]=“lol”,但这只返回“test”的值,而我需要整个更新的json Promise.map(['5781635026d6fad4486d81e9', '578296e31029e27b4ea53e9d'], function(i) { return User.findOneAs
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数组使用运算符,然后应用方法返回普通JS对象,因为不允许添加属性 看看这个例子:
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);
})
请显示
数组
和用户
的内容。在您显示的代码中,数组
将是一个包含返回的用户
对象的数组。除了JSON是一个字符串之外,您还讨论了JavaScript对象。数组只包含用户对象,没有修改。user
user[“test”]=“lol”之后的user
的内容是什么代码>?放置一个console.dir(用户)代码>直接在用户[“测试”]=“lol”之后代码>。它是同一个用户对象,没有“test”属性。什么是console.dir(object.isfreeze(user))
和console.dir(Object.isExtensible(user))代码>展示给你看?只是出于好奇,你知道物体是如何受到保护的吗?对于Object.isExtensible(user)
?@t.niese,为什么返回true
,我不太清楚,因为Mongoose文档是Mongoose模型的实例,因此不允许添加属性