gpt4 book ai didi

node.js - 我无法在node.js中使用mongo atlas将数据获取到另一个页面总是显示错误消息无法读取函数的属性

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:16 24 4
gpt4 key购买 nike

错误

TypeError: Cannot read property 'map' of undefined
at User.getCart (D:\udamNode\models\user.js:49:40)
at exports.getCart (D:\udamNode\controllers\shop.js:55:6)
at Layer.handle [as handle_request] (D:\udamNode\node_modules\express\lib\router\layer.js:95:5)
at next (D:\udamNode\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (D:\udamNode\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (D:\udamNode\node_modules\express\lib\router\layer.js:95:5)
at D:\udamNode\node_modules\express\lib\router\index.js:281:22
at Function.process_params (D:\udamNode\node_modules\express\lib\router\index.js:335:12)
at next (D:\udamNode\node_modules\express\lib\router\index.js:275:10)
at Function.handle (D:\udamNode\node_modules\express\lib\router\index.js:174:3)

模型文件方法

getCart() {
const db = getDb();
const productIds = this.cart.items.map(i => {
return i.productId;
});
return db.collection('products').find({ _id: { $in: productIds } }).toArray().then(products => {
return products.map(p => {
return {
...p,
quantity: this.cart.items.find(i => {
return i.productId.toString() === p._id.toString();
}).quantity
};
});
});

}

Controller 文件方法

exports.getCart = (req, res, next) => {req.user.getCart().then(products => {
res.render('shop/cart', {
path: '/cart',
pageTitle: 'Your Cart',
products: products
});
}).catch(err => console.log(err));

};

最佳答案

在上面提供的代码中,this.cart.items未定义。这意味着当获取 user 时,结果对象在查询结果负载中不包含 cart.items

因此,对于 mongodb,以下方法之一应该有所帮助:

  1. 从数据库查询user时,必须包含items嵌套模型
  2. cart 及其 items 应首先在 getCart() 方法中使用附加查询进行查询。

关于node.js - 我无法在node.js中使用mongo atlas将数据获取到另一个页面总是显示错误消息无法读取函数的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com