删除文档中数组元素中的特定对象并保存mongoose

wljmcqd8  于 11个月前  发布在  Go
关注(0)|答案(2)|浏览(91)

我想从数组中删除一个对象。首先,我想通过ID找到客户,然后在购物车数组中的客户模型中,我想根据ID删除一个项目。
这是客户模型中的推车阵列:

carts: [
      {
        items: {
          type: mongoose.Schema.Types.ObjectId,
          ref: "Cart",
        },
        amount: { type: Number, default: 1 },
      },
    ],

字符串
这是删除控制器:

//delete bag item
export const deleteCartItemCtrl = asyncHandler(async (req, res) => {
  const { userId, id } = req.body;
  try {
    const user = Customers.updateOne(
      { _id: userId },
      {
        $pull: {
          carts: { items: [{ _id: id }] },
        },
      }
    );
    res.json({
      status: "success",
      message: "cartItem delete successfully",
    });
  } catch (error) {
    console.log(error),
      res.status(500).json({
        status: "error",
        message: "An error occurred while cart item delete",
      });
  }
});


我使用了“pull”,但是我想要删除的项目没有被删除。

093gszye

093gszye1#

看看你的schema,你有一个carts对象数组,每个对象都有一个items属性,它的类型是ObjectId。你可以使用findByIdAndUpdate,你需要await,然后$pull对象形成数组,如下所示:

const user = await Customers.findByIdAndUpdate(userId,
   {
      $pull: {
         carts: {
            items: id
         },
      }
   },
   { new : true }
);

字符串

hivapdat

hivapdat2#

你可以试试这个:

const result = await Customers.updateOne(
    {_id: userId},
    {
        $pull: {
            carts: { items: id }
        }
    })

字符串
这将从购物车数组中删除该项目。

相关问题