为什么功能变得不确定?

时间:2015-01-13 13:17:17

标签: javascript node.js

我有快速会话,在路线方法中初始化:

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

2 个答案:

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