【发布时间】:2021-11-28 06:36:00
【问题描述】:
这是我的购物车模型:
const cartSchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: "userSchema",
},
cart: [
{
product: { type: mongoose.Schema.Types.ObjectId, ref: "productSchema" },
amount: { type: Number, require: true, min: 0 },
price: { type: Number, min: 0 },
},
],
totalPrice: {
type: Number,
min: 0,
default: 0,
},
});
我想在更新之前检查 cart.product,如果不存在则推送新商品,否则会随商品增加金额 我正在尝试这种方式先测试推送,但它无法正常工作
router.put("/add-to-cart", authenticateToken, async (req, res) => {
try {
const productInfo = await productSchema.findById(req.body.id);
const filter = {
$and: [{ user: req.user }, { "cart.product": { $nin: [req.body.id] } }],
};
const options = { upsert: true, new: true, setDefaultsOnInsert: true };
const update = {
$push: {
cart: {
product: req.body.id,
amount: req.body.amount,
price: req.body.amount * productInfo.productPrice,
},
},
};
await cartSchema.findOneAndUpdate(filter, update, options);
return res.status(201).send({ status: true });
} catch (err) {
res.status(500).send({ message: err });
}
});
【问题讨论】:
标签: mongodb express mongoose mongodb-query mongoose-schema