我有快速会话,在路线方法中初始化:
router.post('/add', function (req, res) {
if (!req.session.cart) {
req.session.cart = cartController.initializeCart();
}
cartController.addToCart(req.body.productId, req.session.cart, function(error, result) {
error ? res.send(error) : res.send(200);
})
});
我有推车模型作为功能
function cart() {
this.ids = [];
this.addProduct = function (id) {
ids.push(id);
}
}
初始化方法:
var cartModel = require("../models/cart"); //UPD
initializeCart: function() {
return new cartModel(); //UPD exception throw right after this operation
},
添加购物车方法:
addToCart: function(id, cart, callback) {
cart.addProduct(id);
.....
会话:
var expressSession = require('express-session');
app.use(expressSession({
secret: "someSecret"
}));
但是调用cart.addProduct()并不会发生,因为addProduct()未定义。使用原型并没有帮助我。
答案 0 :(得分:1)
您的代码中没有cartModel
功能。
尝试使用return new cart();
代替return new cartModel();
答案 1 :(得分:1)
如果cart
保存在不保留或恢复类型的会话存储系统中,cart
将不再是购物车实例,而只是一个简单的对象。
router.post('/add', function (req, res) {
var cart;
cart = cartController.initializeCart();
if (req.session.cart) {
cart.ids = req.session.cart.ids;
} else {
req.session.cart = cart;
}
cartController.addToCart(req.body.productId, cart, function(error, result) {
error ? res.send(error) : res.send(200);
})
});