node.js和猫鼬:如何调用2个嵌套的回调方法以保存到集合和嵌套列表中?

| 我正在使用mongoDB构建一个node.js应用程序。 我需要创建一个书本对象,保存它,并将其添加到用户的书本列表中。 然后,我需要为该书设置一个“保存”,然后为该用户设置一个“保存”(已为其更新图书列表)。 我做类似的事情:
book = new Book();   // I\'m using moogoose 
book.title = req.params.title
book.save(function(err){
  if(!err){
    jsonObj = {\"title\":book.title};
    res.writeHead(200, {\'content-type\': \'application/json\'});
    res.write(JSON.stringify(jsonObj));
    res.end();

    // Add book in user things list
    user.books.push(book);
    user.save(function(error){
      if(error) {
        console.log(JSON.stringify({ \"error\" : \"internal error\" }));
      }
    });
  } else {
    jsonObj = { \"error\" : \"internal error while saving book\" };
    res.writeHead(200, {\'content-type\': \'application/json\'});
    res.write(JSON.stringify(jsonObj));
    res.end();
  }
  console.log(JSON.stringify(jsonObj));
});
似乎有时这本书保存在DB中,而不保存到用户的书籍列表中,有时则相反。我对异步回调方法不甚了解(位于其顶部...)。 我肯定做错了什么……最好的方法是什么?     
已邀请:
我不太确定自己的意思,但是我认为Mongo正在保存书中的两个不同的对象,因为它认为它们是两个不同的对象(即使对于Javascript,用户数组中的书和该对象都指向同一对象)。 将Book对象保存在Mongo中会更好。获取_ObjectID(由MongoDB生成)并将其保存到用户books数组。     
为了进行调试,请将您的代码更改为:
} else {
  console.log(\"error saving book : \", err);
  jsonObj = { \"error\" : \"internal error while saving book\" };
  res.writeHead(200, {\'content-type\': \'application/json\'});
  res.write(JSON.stringify(jsonObj));
  res.end();
}
    

要回复问题请先登录注册