Post 相同的 objectID 到不同的 table

Post same objectID in to different table

我正在尝试 post 我的用户中的数据,然后同时 post 我的用户的 _id 作为我捐赠中的参考 ID table。

在我 post 像这样在用户 table 中编辑我的数据之后:

var User = require('../models/user');
var Blooddonation = require('../models/blooddonation'); 
router.post('/createBlooduser',function(req, res) {

        var user = new User(); 

        user.user_lastname =  req.body.user_lastname;
        user.status= "initial";
        user.save(function(err) {});
    });

如何获取 posted 数据的 _id 并在我的捐赠 table 中创建参考 ID?像这样:

**users.json**
{
_id:ObjectId("5c7e591eee959272cc5768cb"),
user_lastname:"Jhonson",
status:"initial"
}

**blooddonations.json**
{
donor_id:ObjectId("5c7e591eee959272cc5768cb")
}

_id 属性 实际上是在您使用 new User() 这样的语句创建新实例时立即创建的。因此,您实际上可以在 之前 访问该值,它甚至存储在集合中,或者在创建实例之后的任何时间:

router.post('/createBlooduser',function(req, res) {

    var user = new User(); 

    user.user_lastname =  req.body.user_lastname;
    user.status= "initial";
    user.save(function(err) {
      if (err) throw err;  // or really handle better

      // You can also just create() rather than new Blooddonation({ donor_id: user._id })
      Blooddonation.create({ donor_id: user._id }, function(err, donor) {
         // check for errors and/or respond
      })
    });
});

如果您可能只想访问可能 "default on save" 的其他属性,那么您可以从 save()create():

的回调中访问
router.post('/createBlooduser',function(req, res) {

    User.create({
      user_lastname: req.body.user_lastname;
      status: "initial"
    }, function(err, user) {       // this time we pass from the callback
      if (err) throw err;          // or really handle better

      Blooddonation.create({ donor_id: user._id }, function(err, donor) {
         // check for errors and/or respond
      });
    });
});