Я искал другие вопросы, но ни один из них не помог мне.Я пытаюсь сохранить параметры поиска в таблице в angularJs, используя модуль express-session.Я уже сохраняю некоторую информацию в сеансе, когда пользователь входит в систему (и это работало нормально).Но когда я пытаюсь сделать то же самое с фильтрами, это не работает
Это то, что я использую
В 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);
});
А затем 2 функции в nodejs
УстановкаДанные
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 не определен)