node.js - 保存和检索 req.session 的内容
问题描述
我已经搜索了其他问题,但似乎没有一个对我有帮助。我正在尝试使用 express-session 模块将搜索参数保存在 angularJs 的表中。当用户登录时,我已经在会话中保存了一些信息(并且工作正常)。但是当我尝试对过滤器做同样的事情时,它不起作用
这就是我使用的
在 server.js 中
var session = require('express-session');
var passport = require('passport');
var app = express();
app.use(session({
secret: 'secret' ,
saveUninitialized: true,
resave: true,
}));
在 AngularJs 中,我调用该函数来设置和检索会话数据
检索数据
$http.get(apihost + '/customSessionFilters/getSessionFilters')
.success(function (getCurrentFilters) {
if(getCurrentFilters.status == 'filters') {
console.log(getCurrentFilters);
}
else {
console.log('no filters');
}
})
.error(function (err) {
Notification.error(err.message);
});
设置数据
var filters = angular.toJson($scope.searchParams);
$http.post(apihost + '/customSessionFilters/setSessionFilters/' + filters)
.success(function (setCurrentFilters) {
console.log(setCurrentFilters);
})
.error(function (err) {
Notification.error(err.message);
});
然后是nodejs中的2个函数
设置数据
var express = require('express');
var router = express.Router();
var session = require('express-session');
router.post('/setSessionFilters/:paramsFilter',function(req,res,next) {
var filters = JSON.parse(req.params.paramsFilter);
req.session.customSessionFilters = filters;
console.log('PROVA NUOVO SERVICE -> setSessionFilters');
console.log(req.session);
res.json({status: 'ok', data: req.session.customSessionFilters});
});
并检索数据
router.get('/getSessionFilters',function(req,res,next) {
console.log('***********');
console.log(req.session);
if(req.session.customSessionFilters) {
console.log('PROVA NUOVO SERVICE -> getSessionFilters');
console.log(req.session.customSessionFilters);
res.json({status: 'filters', data: req.session.customSessionFilters});
}
else {
console.log('PROVA NUOVO SERVICE -> no filters');
res.json({status: 'no_filters'});
}
});
我希望找到 req.session.customSessionFilters 来填充我在表格中的搜索表单中设置的参数。我知道数据被传递给“设置会话数据”,因为我可以在 console.log 中看到它们,但是当我到达“获取会话数据”时,它们就消失了。有什么帮助吗?
编辑: router.post(customSessionFilters/setSessionFilters) 的输出(UserMaintenanceCenterCode 和dealerList 是我已经在登录中放入会话的变量;customSessionFilters 是我在函数中添加的)
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true },
passport: { user: 90 },
UserMaintenanceCenterCode: [ 1 ],
dealerList: [ 13 ],
customSessionFilters: { year: 2018, Code: 'CC010', Dealer: 13 }
}
router.get(customSessionFilters/getSessionFilters) 的输出是相同的,但没有 customSessionFilters。
$http.post(apihost + '/customSessionFilters/setSessionFilters') 的输出没有显示,但它只会在连接的函数中打印 customSessionFilters。
$http.get(apihost + '/customSessionFilters/getSessionFilters') 的输出总是打印“no_filters”(未定义 customSessionFilters 时函数的响应)
解决方案
推荐阅读
- python - 如何在 Python 中为两个文件嵌套两个循环
- wso2 - WSO2 身份服务器:如何在 Dockerized WSO2 身份服务器中输入密钥库和私钥密码
- python - html 表格到 csv 刮刀
- regex - 如何在 Google Analytics 中使用 RegEx 排除字符串?
- .net - .NET 框架是否有 System.Runtime.Intrinsics?
- android - 以编程方式设置列表视图项的背景颜色
- vba - 类模块 Outlook VBA 的问题
- excel - 复制文本下方的单元格
- android - 如何在 DrawerLayout 中正确使用 Android 片段?
- javascript - Text Javascript的淡入淡出效果