如何在Node / Express中实现会话?

时间:2015-12-11 20:29:15

标签: javascript node.js

我想了解会话是如何运作的。我需要post对路线/task/save进行get/task/list,我将获得我在/task/save发布的元素, post应该与req.body上的对象一起使用{ "name" : "task name" },并且在发布之前,我需要修改该对象并放置node-uuid生成的ID,然后,我需要将这些元素推送到数组并将它们放在名为“task”的会话中。我正在使用express-session,这是我到目前为止的代码

app.js

var express = require('express');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var uuid = require('node-uuid');
var session = require('express-session');
var _ = require('lodash');

var routes = require('./routes/index');
var save = require('./routes/save');

var app = express();
app.use(bodyParser.json());
app.use(cookieParser());
app.use(session({secret: '1234567890QWERTY'}));

app.use('/', routes);
app.use('/task/list', save);
app.use('/task/save', save);

});

module.exports = app;

这里是我有save.js

的文件夹路径
var express = require('express');
var router = express.Router();

/* GET task save */
router.get('/', function(req, res, next) {
  res.send('Get the list of tasks');
});

router.post('/', function(req, res, next) {
  res.send('Send body with name, taskName & the modified object including the UUID');
});


module.exports = router;

为了让我把这些任务放在会话中,你有什么建议?

1 个答案:

答案 0 :(得分:2)

在router.post hander方法中,如果数组不存在,则需要向req.session变量添加数组。您可以在此阵列中保存任务。

req.session.tasks = req.session.tasks || [] // set tasks to be a new array if it doesn't exist yet
req.session.tasks.push({"name":"I am a new task"})

一旦有了对tasks数组的引用,就可以将任务存储在其中。

在router.get的处理程序中,您将可以访问您的任务:

console.log(req.session.tasks) // [{"name":"I am a new task"}, .... ]