Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js Can';无法保存推送到数组的对象_Node.js_Mongoose - Fatal编程技术网

Node.js Can';无法保存推送到数组的对象

Node.js Can';无法保存推送到数组的对象,node.js,mongoose,Node.js,Mongoose,嗨,我对猫鼬有个奇怪的问题 Group.findById(req.params.group_id, function(err, group){ User.findOne(req.body, function(err, user){ group.users.push(user); user.groups.push(group); group.save(); user.save();

嗨,我对猫鼬有个奇怪的问题

Group.findById(req.params.group_id, function(err, group){
        User.findOne(req.body, function(err, user){
            group.users.push(user);
            user.groups.push(group);
            group.save();
            user.save();
            res.json({group: group, user: user});
            return true;    
        });
    });
我试图在用户和组之间建立双向关系。用户被正确地推送到group.users数组中并完全保存。尝试在user.groups数组中保存组时出现此问题。在我再次尝试运行此操作之前,mongo端没有任何操作。旧元素现在已正确保存,新元素仍然未保存。在express端,一切似乎都很好,返回到前端的对象也是有效的

这是我的问题的形象化

> Group    User     group.users in database  user.groups in database
> group1   user1       [user1]                   []       
> group2   user2      [user1, user2]            [group1]
> group3   user3    [user1, user2, user3]     [group1, group2]
我希望你明白问题的关键在哪里


关于如何解决该问题,您有什么建议吗?

这是由于
save
的异步操作造成的,因此您需要像这样嵌套它们(假设您对数组子文档使用refs):


我还想研究一下如何使用库来加速这一过程,因为查找组和用户的两个查询并不相互依赖。

您检查了建议的答案了吗?对不起,我昨天没有参与该项目。现在一切正常,谢谢你的帮助。太完美了。很高兴它对你有用。只要记住,对于任何寻求类似问题解决方案的人,都要接受答案。
Group.findById(req.params.group_id, function(err, group){
  User.findOne(req.body, function(err, user){
    group.users.push(user);
    group.save(function (err, group) {
      user.groups.push(group);
      user.save(function (err, group) {
        res.json({group: group, user: user});
      });
    });
  });
});