2015-01-13 86 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); 
    }) 
});