无法读取“ ID参数”的属性
这是我导入了cart.js模型的Router的代码
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(内部/进程/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(内部/进程/next_tick.js:61:11)[nodemon]应用程序崩溃-等待文件更改,然后再开始...
请参见我的完整代码:.git
回答如下:我看到您的代码,在此行Product.findById(productID,(err,product)=>{
中,您从findById
模块调用了product
函数。但我只在此文件中看到
const mongoose = require('mongoose');
const schema = mongoose.Schema;
const productSchema = new schema({
imagePath: {type: mongoose.Schema.Types.String, required:true},
// imagePath2: {type: mongoose.Schema.Types.String, required:true},
// imagePath3: {type: mongoose.Schema.Types.String, required:true},
// imagePath4: {type: mongoose.Schema.Types.String, required:true},
// imagePath5: {type: mongoose.Schema.Types.String, required:true},
name: {type: mongoose.Schema.Types.String, required:true},
desc: {type: mongoose.Schema.Types.String, required:true},
price: {type: mongoose.Schema.Types.Number, required:true},
});
module.exports = mongoose.model("DND - Products",productSchema);
您必须在本节中定义所需的功能。例如:findById