Опубликовать один и тот же objectID в другой таблице - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь опубликовать данные в моем пользователе, а затем одновременно опубликовать _id моего пользователя в качестве ссылочного идентификатора в моей таблице пожертвований.

После того, как я разместил свои данные в таблице пользователейнапример:

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 опубликованных данных и сделать ссылочный идентификатор в моей таблице пожертвований?Как то так:

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

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

1 Ответ

1 голос
/ 05 марта 2019

Свойство _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
      });
    });
});
...