【发布时间】:2021-01-05 16:59:32
【问题描述】:
我的 API 中有以下架构,它获取用户名和他添加到购物车的产品的详细信息。
const mongoose = require('mongoose');
mongoose.connect('mongodb connection').then(()=>{
console.log('DB connection is successfull');});
const AutoIncrement = require('mongoose-sequence')(mongoose);
const cartSchema = new mongoose.Schema({
cartId : {
type : Number
},
username : {
type : String
},
productsInCart : [{
productId : {type : Number,required : true},
productName : {type:String},
quantity : {type:Number}
}],
statusOfCart : {
type : String,
default : 'Open'
}},{ timestamps: true });
cartSchema.plugin(AutoIncrement,{id : 'cart_seq',inc_field : 'cartId'});
let cartModel = mongoose.model('carts',cartSchema);
module.exports = cartModel;
正如您在上面的代码中看到的,我还使用 mongoose-sequence 将 cartId 设为自动递增字段。
现在,我有一个 POST 请求,它在请求正文中获取以下 JSON,并使用 create 方法将其添加到 MongoDB 中的购物车集合中。
{ “用户名”:“管理员”, "productsInCart": [ { “产品ID”:1, "productName":"手表", “数量”:4 }, { “产品编号”:2, "productName":"电话", “数量”:5 } ] }
Express API 中 POST 请求的路由处理程序中的代码如下所示
let ctMod = new cartModel();
ctMod.username = req.body.username;
ctMod.productsInCart = req.body.productsInCart;
let insCartData = await cartModel.create(ctMod,{new:true});
if(insCartData.length > 0)
{
return res.status(200).json({
message : `New items got inserted into the cart with the ID : ${insCartData.cartId}`,
data : insCartData
});
}
上面的代码将两个条目插入到集合中,而不是一个
{ "statusOfCart": "打开", "productsInCart": [], "createdAt": "2021-01-04T15:25:35.188Z", "updatedAt": "2021-01-04T15:25:35.188Z", “cartId”:13, “__v”:0 }, { "statusOfCart": "打开", “产品购物车”:[ { "_id": "5ff332a891aa170b60a21ea9", “产品ID”:1, "productName": "手表", “数量”:4 }, { "_id": "5ff332a891aa170b60a21eaa", “产品ID”:2, "productName": "电话", “数量”:5 } ], “用户名”:“管理员”, "createdAt": "2021-01-04T15:25:35.210Z", "updatedAt": "2021-01-04T15:25:35.210Z", "cartId": 14, “__v”:0 }
你能帮我理解为什么我的数据库中有重复的条目吗?
【问题讨论】:
标签: node.js mongodb express mongoose mongoose-schema