首页 > 解决方案 > 我如何不将参数 id 发布(保存)到数据库中已经存在的数据库

问题描述

我正在使用 express(mongoose) 中的购物车,它接受来自参数的 id,它是服务模式和用户 id。我可以在购物车模型中发布服务和用户。我的问题是如果购物车模型已经有该服务(req.params.id),我如何不发布该服务。如果数据库中已经有带有 id 的服务,那么只需返回购物车中已经存在的服务。

在数据库中:

_id:ObjectId(60bd12d694c98f478094fc9c)
user:ObjectId(60ae3106b459094f38c6969b)
service:ObjectId(60a371587f104a3234e13dbf)

_id:ObjectId(60bd130f9a1a334230ef62fa)
user:ObjectId(60ae3106b459094f38c6969b)
service:ObjectId(60a371587f104a3234e13dbf)

在购物车控制器中:

const postInCart = catchAsyncErrors(async (req, res, next) => {
  req.body.user = req.user._id; //contains user object from database

  const id = req.params.id;

  const cart = new cartModel(req.body);

  const user = await userModel.findById(req.body.user);

  const service = await serviceModel.findById(id);

  if (!service) {
    return next(new ErrorHandler("Service Not Found!!", 404));
  }

  cart.user = user;

  cart.service = service;

  await cart.save();

  return res.status(200).json({
    sucess: true,
    cart,
  });
});

标签: node.jsmongodbexpressmongoose

解决方案


推荐阅读