Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要修改json并在aync查找操作中返回_Javascript_Node.js_Mongodb_Mongoose_Bluebird - Fatal编程技术网

Javascript 需要修改json并在aync查找操作中返回

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

我需要浏览对象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数组使用运算符,然后应用方法返回普通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模型的实例,因此不允许添加属性