javascript - 无法读取未定义的属性 "cart",这是一个 session 属性

标签 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程序时, 触发以下错误。

Cannot read property 'cart' of undefined

TypeError: Cannot read property 'cart' of undefined

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

该程序用于读取 session 属性“cart”(无论是否创建),以返回事件 session 的购物车记录。

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

如何解决此问题以使程序不会返回错误?

最佳答案

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

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

您可以使用基本的 express-session

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

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

然后您的所有请求都将具有 session 属性。

关于javascript - 无法读取未定义的属性 "cart",这是一个 session 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49609912/

相关文章:

javascript - Lodash中如何将数组转换为对象?

javascript - Angular 2+ 从注入(inject)动态模板的标记创建 ViewRef

javascript - 雅虎媒体播放器 - 不包括视频?

javascript - Nodejs 生成器异步回调 - slack unity 云构建

javascript - 通过 node-http-proxy 持久化基于 cookie 的 session

javascript - 将弹出框定位在元素的中心

javascript - Node - mysql 查询在完成原始查询之前几分钟后重复自身

node.js - 使用没有临时文件的 Node js将文件流式上传到rest文件服务器

json - 使用 Jade 迭代 JSON

node.js - express 4.0 中的 'extended' 是什么意思?