Mongoose / Express Middleware在插入时更新参考文档

时间:2018-01-22 13:40:06

标签: node.js mongodb express mongoose

鉴于以下代码以及我在API中使用mongoose populate()这一事实,如何使用checkin user更新_id参考文档,同时?

我觉得它像鸡/问题。谢谢!

router.post('/', (req, res, err) => {
  var checkin = new Checkin(req.body);
  var user    = new User(checkin.user);

  checkin.save({
    'user':             checkin.user,
    'checkin_comment':  checkin.checkin_comment,
    'rating_score':     checkin.rating_score
  });
});

Checkin模型具有以下内容:

user: {
    type: Schema.Types.ObjectId,
    ref: 'User',
    required: true
  },

..而User就是这个:

checkins: [{
    type: Schema.Types.ObjectId,
    ref: 'Checkin'
  }],

1 个答案:

答案 0 :(得分:1)

关于您的模型定义,似乎User模型上的属性checkins是可选的。用户可以在没有签入参考的情况下存在。

如果是这种情况,则首先创建用户,然后签入并使用其ID更新用户。

修改:根据您的评论,我们假设用户已存在于数据库中且其ID在userId中可用。

类似于:

checkin.save()
    .then((checkinDoc) => {
      return User.findOneAndUpdate(
            {_id: userId},
            {$push:{checkins: checkinDoc._id}},
            {new: true}
      );
    });