无法保存推送到数组的对象
Can't save object pushed to array
嗨,我有一个关于 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();
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});
});
});
});
});
我也会考虑使用像 async 这样的库来加快这个过程,因为查找组和用户的两个查询并不相互依赖。
嗨,我有一个关于 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();
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});
});
});
});
});
我也会考虑使用像 async 这样的库来加快这个过程,因为查找组和用户的两个查询并不相互依赖。