Сохраните и получите содержимое req.session - PullRequest
0 голосов
/ 10 июня 2019

Я искал другие вопросы, но ни один из них не помог мне.Я пытаюсь сохранить параметры поиска в таблице в 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 не определен)

...