【发布时间】:2020-01-29 08:59:24
【问题描述】:
这是我导入 cart.js 模型的路由器代码
var router = require('express').Router();
var Product = require('../models/products');
var Cart = require('../models/cart');
router.get('/add-to-cart/:_id',(req,res,next)=>{
const productID = req.params._id;
var cart = new Cart(req.session.cart ? req.session.cart : {});
Product.findById(productID,(err,product)=>{
if(err){
res.redirect('/');
}
cart.add(product, product.id);
req.session.cart = cart;
res.redirect('/');
})
})
这是我的 Cart.js 代码
module.exports = function cart(oldCart){
this.items = oldCart.items;
this.totalQty = oldCart.totalQty;
this.totalPrice = oldCart.totalPrice;
this.add = function(item,id){
var storedItem = this.items[id]; // Here is Problem
if(!storedItem){
storedItem = this.items[id] = {item: item, qty: 0, price: 0};
}
storedItem.qty++;
storedItem.price = storedItem.item.price * storedItem.qty;
this.totalQty++;
this.totalPrice = storedItem.price;
};
this.generateArray = function(){
var array = [];
for (var id in this.items){
array.push(this.items[id]);
}
return array;
};
}
错误:
events.js:174 投掷者; // 未处理的“错误”事件 ^
TypeError:无法读取未定义的属性“5d9182475f539435e81a7bb9” 在 cart.add (C:\Users\Manav\Documents\Github\E_com_App\models\cart.js:7:36) 在 Product.findById (C:\Users\Manav\Documents\Github\E_com_App\routes\routes.js:85:10) 在 C:\Users\Manav\Documents\Github\E_com_App\node_modules\mongoose\lib\model.js:4589:16 在 C:\Users\Manav\Documents\Github\E_com_App\node_modules\mongoose\lib\query.js:4323:12 在 process.nextTick (C:\Users\Manav\Documents\Github\E_com_App\node_modules\mongoose\lib\query.js:2805:28) 在 process._tickCallback (internal/process/next_tick.js:61:11) 在以下位置发出“错误”事件: 在 C:\Users\Manav\Documents\Github\E_com_App\node_modules\mongoose\lib\model.js:4591:13 在 C:\Users\Manav\Documents\Github\E_com_App\node_modules\mongoose\lib\query.js:4323:12 在 process.nextTick (C:\Users\Manav\Documents\Github\E_com_App\node_modules\mongoose\lib\query.js:2805:28) 在 process._tickCallback (internal/process/next_tick.js:61:11) [nodemon] 应用程序崩溃 - 启动前等待文件更改...
【问题讨论】:
-
请阅读关于如何提问的 SO 帖子。
-
当询问“为什么我的代码不起作用”时,actual code is pretty much required。仅错误消息就无法告诉我们什么。请包含 最小 必要的代码以重现问题。然后有人可以真正帮助你。
-
@NeilLunn 感谢您的帮助,这是我对 StackOverflow 的第一次体验
-
需要更多上下文。该错误基本上是告诉您
this.items是undefined,这反过来可能意味着oldCart可能未定义。您需要显示您期望的输入,以及该函数在上下文中的用法。请阅读评论中的链接。从外部链接到完整且可能“足够大”的代码列表与所说的背道而驰。 您的问题中的必要代码。 -
@NeilLunn Check my Code
标签: node.js mongodb express mongoose body-parser