Javascript类型错误:无法读取属性';查找';未定义的
您好,我对编码还不熟悉&面临一个我自己无法解决的奇怪问题,请参阅下面的代码Javascript类型错误:无法读取属性';查找';未定义的,javascript,e-commerce,Javascript,E Commerce,您好,我对编码还不熟悉&面临一个我自己无法解决的奇怪问题,请参阅下面的代码 const Cart = require('../model/cart'); exports.addToCart = (req, res) => { Cart.find({user: req.user._id}).exec((error, data) => { if (error) return res.send(error); if
const Cart = require('../model/cart');
exports.addToCart = (req, res) => {
Cart.find({user: req.user._id}).exec((error, data) => {
if (error) return res.send(error);
if (data) {
console.log(data);
const product = req.body.cartItems.product;
const addOne = data.cartItems.find(c=>c.product == product);
if(addOne){
Cart.findOneAndUpdate({ "user" : req.user._id, "cartItems.product" :product},{
"$set":{
"cartItems": {
...req.body.cartItems,
quantity : addOne.qunatity + req.body.cartItems.qunatity,
}
}
}).exec((error,data)=>{
if (error) return res.send(error);
if (data) return res.send(data);
});
}
else{
Cart.findOneAndUpdate({ user : req.user._id},{
"$push":{
"cartItems": req.body.cartItems
}
}).exec((error,data)=>{
if (error) return res.send(error);
if (data) return res.send(data);
});
}
}
else {
const cart = new Cart({
user: req.user._id,
cartItems: [req.body.cartItems]
});
cart.save((error, data) => {
if (error) return res.send(`Something went wrong ${error}`);
if (data) return res.send(data);
})
}
})
};
if
语句条件没有将您从错误中解救出来TypeError:无法读取未定义的属性“find”
,因为“data”包含任何类型的值(exclude->null、undefined或0),但预期的“cartItems”在“data”对象中不存在
您可以尝试以下代码来调试代码:
console.log(data.cartItems) // will return undefined
console.log(data) // doesn't contain "cartItems"
如果cartItems
对您的状况很重要,请使用:
if(data && data.cartItems)
对于您帖子中的#2,您的数据不太可能未通过真实性测试:
注意,如果({})
是真实的。即使是空的JSON响应也是真实的
由于您记录了数据,请共享其值。最好将所有可能的数据作为问题的一部分提供。仅仅因为定义了数据
,并不意味着它有cartItems
属性您似乎要记录数据
。抛出错误时它包含什么?它是否有一个cartItems
?