【发布时间】:2021-10-13 19:39:17
【问题描述】:
我正在创建一个电子商务应用程序,我目前正在使用 mongoDb 和 nodejs 中的编码处理购物车。我已经尝试了很多,但 cart.save() 不是一个函数错误正在引发。下面是我的 cartModel.js 从“猫鼬”导入猫鼬 常量 cartSchema = mongoose.Schema( { 用户:{ 类型:mongoose.Schema.Types.ObjectId, 要求:真, 参考:“用户”, }, 购物车项目:[ { 名称:{类型:字符串,必需:真}, 数量:{类型:数字,必填:真}, 图片:{类型:字符串,必需:真}, 价格:{类型:数字,必填:真}, countInStock: { type: Number, required: true }, 产品: { 类型:mongoose.Schema.Types.ObjectId, 要求:真, 参考:“产品”, }, }, ], }, { 时间戳:真, } ) const cartModel = mongoose.model("Cart", cartSchema) 导出默认cartModel
和cartController.js
export const addToCart = asyncHandler(async (req, res) => {
const { cartItems } = req.body
if (cartItems && cartItems.length === 0) {
res.status(400)
throw new Error("No item in the cart")
} else {
const cart = await Cart.find({ user: req.user._id })
if (cart && cart.length !== 0) {
cart.cartItems = [...cartItems]
const updatedCart = await cart.save()
res.status(201)
res.json(updatedCart)
} else {
const newCart = new Cart({
user: req.user._id,
cartItems,
})
const updatedCart = await newCart.save()
res.status(201)
res.json(updatedCart)
}
}
})
当我尝试使用以下对象更新它时
{
"cartItems":[
{
"name":"Ring",
"qty":"1",
"image":"ring-image",
"price":"160",
"countInStock": 5,
"product": "60ff8222ce6dca3378449b93"
},{
"name":"Wallet",
"qty":"2",
"image":"wallet-image",
"price":"40",
"countInStock": 16,
"product": "60ff8222ce6dca3378449b93"
}
]
}
它给我的错误是 cart.save() 不是一个函数。我不知道我做错了什么,因为 newCart.save() 运行良好,但是为什么 cart.save() 会引发错误?
【问题讨论】: