2015-01-13 88 views
0

我有明确的会议,这在路由方法的初始化:为什么函数变得未定义?

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命令()是不确定的。使用原型不能帮助我。

屏幕: http://prntscr.com/5rz61t

+3

嗨,你可以发布代码为一块? – atmd

+0

你对会话存储使用什么? – Paul

+0

我已更新帖子,你可以看到。 – MaksimNikicin

回答

1

。在你的代码中没有cartModel功能。

尝试return new cart();,而不是return new cartModel();

+0

有cartModel我ncontroller。对不起,我没写过 – MaksimNikicin

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); 
    }) 
});