在尝试使用以下方法将产品添加到我的数据库时,
//ADD PRODUCT
router.post("/addproduct", verifyTokenAndAdmin, async (req, res) => {
const newProduct = new Product(req.body);
try {
console.log("req for pdt add");
const savedProduct = await newProduct.save();
console.log("pdt added successfully");
res.status(200).json(savedProduct);
} catch (err) {
res.status(500).json(err);
}
});
Mongoose在添加第二个产品时抛出此错误。第一个产品总是成功的,但无法进行第二次发布请求,并且更新产品详细信息的请求也不起作用,但删除请求工作正常
{
"index": 0,
"code": 11000,
"keyPattern": {
"Name": 1
},
"keyValue": {
"Name": null
}
}
下面是我的产品架构
常量{默认值: Mongoose =要求(“ Mongoose ”);
const ProductSchema = new mongoose.Schema(
{
title: { type: String, required: true, unique: true },
desc: { type: String, required: true },
img: { type: String, required: true },
category: { type: Array, required: true },
size: { type: String },
color: { type: String },
price: { type: Number, required: true },
},
{ timestamps: true }
);
module.exports = mongoose.model("Product", ProductSchema);
2条答案
按热度按时间xzv2uavs1#
因为你的MongoDB字段“name”在字段“Indexes”中有唯一的属性,你必须删除这个属性,否则你永远不能创建相同的name值,即使它是一个空值。
我以前也犯过同样的错误,这是我对这个问题的解决方案:
ijxebb2r2#
出现此错误的原因是模型等待接收实际上应该来自请求主体的数据,但由于您没有添加中间件app.use(express.json())而无法读取该数据,因此它创建了索引,但没有创建所有数据。