Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 在Mongoose模型中保存修改过的文档(使用修改过的子文档数组)_Javascript_Node.js_Mongodb_Mongoose_Nosql - Fatal编程技术网

Javascript 在Mongoose模型中保存修改过的文档(使用修改过的子文档数组)

Javascript 在Mongoose模型中保存修改过的文档(使用修改过的子文档数组),javascript,node.js,mongodb,mongoose,nosql,Javascript,Node.js,Mongodb,Mongoose,Nosql,我目前拥有的代码是: User.findOne( { "subUsers.email" : userEmail }, { subUsers : { $elemMatch: { email : userEmail } } }, function(err, user){ if(user){

我目前拥有的代码是:

User.findOne(
    {
        "subUsers.email" : userEmail
    },
    {
        subUsers : {
            $elemMatch: {
                email : userEmail                            }
        }
    },
    function(err, user){
        if(user){
            var information = user.subUsers[0].information.id(id);

            information.arrayA.push({someId : "something"});

            user.save(callback(err)); // Also tried information.save()
                                      // without luck
        }

        callback(err);
    }
);
这不会返回任何类型的错误,但是当我检查数据库时,新的数组元素没有被推送(整个文档是完整的)


任何帮助都将不胜感激。谢谢

您可能应该在这里查看第一个常见问题:

在你的例子中,你想添加第三行

var information = user.subUsers[0].information.id(id);
information.arrayA.push({someId : "something"});
user.subUsers.set(0, information);

或者类似的东西。

到今天为止,猫鼬还没有准备好以原子的方式进行多级嵌套


因此,即使它返回到一种关系数据库,在这种情况下,最好将嵌套拆分为至少两个集合,并使用自动生成的ObjectId引用。

请发布您的模式。我不熟悉mongo,但只是为了防止它与问题有关,
user.save(callback)的回调(err));
可能在
回调(err);
结束后被调用。因此,如果有
用户,回调可能被调用两次。也许你需要
if(user){…}else{callback(err);}
或其他什么的。我肯定忘了一个“else”。仍然没有保存,但谢谢你提醒。)谢谢你的提示。尝试了“set()”和“markModified()”。但他们也没有一个人在工作/我认为您的代码有一个微妙的错误,您可以使用set发布更新的版本吗?即使“set”起作用,在这种情况下也不会有用,因为我使用id()来检索嵌套数组中的元素。看起来我的处境和另一个程序员的处境一样:你知道子文档保存的任何工作示例吗?我将不胜感激。
var information = user.subUsers[0].information.id(id);
information.arrayA.push({someId : "something"});
user.subUsers.set(0, information);