首页 > 解决方案 > 无法从数组中提取记录

问题描述

我正在尝试使用 Mongoose 'pull' 从对象数组中删除一个项目。我得到一个 200 的状态码,显然一切都很好,但实际上并没有删除记录?mongo db 中的 userId 如下所示:

用户 ID:对象 ID(“6b275260a6g58308e510721b”)

exports.putDislike = (req, res, next) => {
  const productId = req.body.productId;
  const userId = req.body.userId;

  Product.findById(productId)
  .then(product => {
    if (!product) {
      return next(new Error('Product not found.'));
    }
     product.requests.pull(userId)
     return product.save()
     .then(result => {
        res.status(200).json({ message: "Item request removed." });
     })
  })
  .catch(err => {
    res.status(500).json({ message: "Removing request failed." });
  });
};

标签: node.jsmongoose

解决方案


我不确定您是否正确使用 pull,请查看此链接https://docs.mongodb.com/manual/reference/operator/update/pull/

据此,我认为您的代码应该类似于下面的示例:

exports.putDislike = (req, res, next) => {
  const productId = req.body.productId;
  const userId = req.body.userId;

  Product.update(
    { "_id": productId },
    { $pull: { requests: {userId: userId} } })
  .then(result => {
      res.status(200).json({ message: "Item request removed." });
  })
  .catch(err => {
    res.status(500).json({ message: "Removing request failed." });
  });
};

推荐阅读