【问题标题】:javascript - Cannot read property "cart" of undefined which is a session attributejavascript - 无法读取作为会话属性的未定义属性“购物车”
【发布时间】:2018-04-02 10:54:31
【问题描述】:
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 程序时, 触发以下错误。

无法读取未定义的属性“购物车”

TypeError:无法读取未定义的属性“购物车”

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

这个程序是读取一个会话属性“cart”,不管它是否创建,返回活动会话的购物车记录。

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

我怎样才能解决这个问题,使程序不会返回错误?

【问题讨论】:

  • req根据错误没有session属性。
  • 您正在对 api 进行 get 调用,您如何将对象传递给它。提供执行此调用的代码。

标签: javascript node.js express session


【解决方案1】:

您正在尝试访问 req 上不存在的 session 属性,因为您没有使用任何会话中间件。

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

您可以使用基本的express-session

// require it
var session = require('express-session')

// configure it
app.use(session({
    secret: '123456',
    resave: false,
    saveUninitialized: true,
    cookie: {
        secure: true
    }
}))

那么你的所有请求都会有一个session 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2022-09-24
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多