node.js - 我如何不将参数 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,
});
});
解决方案
推荐阅读
- freepascal - 带有 objfpc 模式记录的 TFPGList
- c++ - 在 Windows 中使用 vscode 将 sqlite 与 C++ 链接时出错
- javascript - 无法读取未定义的属性“createManager”
- excel - 在 Excel VBA 中复制行
- android - 安卓模拟器源码
- python-3.x - “time.sleep()”在带有使用“end”属性的打印函数的 for 循环中不起作用吗?
- python - 如何用卷积神经网络表示多标签分类中的 Null 类?
- hide - 如何在 SwiftUI 中隐藏状态栏
- angular - 为什么这个 (gameindex) 属性值在由 console.log 打印时未定义?
- mysql - 我们可以将电子邮件作为mysql中的唯一键吗?