将相同的objectID发布到不同的表中

问题描述 投票:0回答:1

我正在尝试在我的用户中同时发布数据,将我的用户的_id作为参考ID发布在我的捐赠表中。

我在users表中发布我的数据后,如下所示:

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) {});
    });

如何获取已发布数据的_id并在我的捐赠表中创建参考ID?像这样的东西:

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

**blooddonations.json**
{
donor_id:ObjectId("5c7e591eee959272cc5768cb")
}
node.js angularjs mongodb express mean-stack
1个回答
1
投票

只要您使用_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
      })
    });
});

如果您可能只想访问可能“默认保存”的其他属性,那么您可以从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
      });
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.