猫鼬将产品 table 中的 ID 推送到用户 table

Mongoose push id from products table into users table

我目前有一个用户模型和一个产品模型。我正在尝试将特定产品的 ID 推送到用户架构中名为产品的数组中。

基本上我正在尝试做这样的事情

router.post('/setproduct', function(req, res) {
  var product = new models.Product({
    name:           req.body.prodName,
    price:       req.body.price,
    color:          req.body.color
  });
  product.save(function(err) {
    if (err) {
      var error = 'Something bad happened! Please try again.';
      res.render('setproduct.jade', { error: error }, {csrfToken: req.csrfToken() });
    } else {

      /* PUSH PRODUCT.ID TO USER.PRODUCTS ARRAY */

      res.redirect('/dashboard');
    }
  });
});

您要查找的是 $push 运算符。

product.save(function(err, doc) {
  if (err) {
    var error = 'Something bad happened! Please try again.';
    res.render('setproduct.jade', { error: error }, {csrfToken: req.csrfToken() });
  } else {
    var uid = req.user._id;
    Users.update({ _id: uid }, { $push: { products: doc._id } }, function(err) {
      if (err) // Handle error...
      res.redirect('/dashboard');
    });
  }
});

我只是假设您可以使用 req.user._id.

之类的内容访问您路线中用户的 _id

一个友好的建议是你完全跳过 Mongoose 并只使用原始 MongoDB Node.js Driver (docs) 因为它更简单并且 MongoDB 是 schema-less 所以强制执行一个collections 上的架构,您也可能会获得更好的性能。虽然这只是个人喜好,所以完全取决于您。