javascript - 无法读取未定义的属性“cart”,这是一个会话属性

时间:2018-04-02 10:54:32

标签: javascript node.js express session

var express = require('express');
var router = express.Router();
var Cart = require('../models/cart')

router.get('/', function(req, res, next) {
  var cart = new Cart(req.session.cart)
});

当我使用“get”方法执行上述node.js程序时, 触发以下错误。

  

无法读取未定义的属性'cart'

     

TypeError:无法读取未定义的属性'cart'

我想模拟购物车,并在用户尝试将商品添加到购物车时使用会话属性存储记录。

该程序用于读取会话属性“cart”,无论是否创建,都可以返回活动会话的购物车记录。

但是,如果我之前没有初始化它,程序似乎无法识别这个“cart”会话属性。

如何解决此问题,以免程序返回错误?

1 个答案:

答案 0 :(得分:1)

您正在尝试访问<route streamCache="true"> 上不存在的session属性,因为您没有使用任何会话中间件。

即使您创建了这样的属性,它也不会在HTTP请求中持久存在,您需要使用会话管理器来处理该持久性。

您可以使用基本express-session

req

然后您的所有请求都会有// require it var session = require('express-session') // configure it app.use(session({ secret: '123456', resave: false, saveUninitialized: true, cookie: { secure: true } })) 属性。