Fragster
@Fragster
помогло? отметь решением!

Как правильно добавить данные в сессию после возврата ответа клиенту в node+express?

Вот так - работает, но ждет окончания таймаута:
app.post('/sessionTest/', urlencodedParser, function (req, res) {
  var sess = req.session;
	console.log(sess);
	if (!req.body.key) {
		return res.sendStatus(400);
	}
	setTimeout(()=>{
		sess[req.body.key] = Math.random();
		return res.send('Sucess!');
	},1000);
});


в вот так результат возвращается сразу, но в сессию ничего не сохраняется
app.post('/sessionTest/', urlencodedParser, function (req, res) {
  var sess = req.session;
	console.log(sess);
	if (!req.body.key) {
		return res.sendStatus(400);
	}
	setTimeout(()=>{
		sess[req.body.key] = Math.random();
	},1000);
	return res.send('Sucess!');
});


просто хотелось бы вернуть управление на клиента до того, как все обработки закончатся и станут известны некоторые данные, которые потом надо сохранить в сессию
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
Fragster
@Fragster Автор вопроса
помогло? отметь решением!
на самом деле ларчик просто открывался: в случае модификации данных сессии после возврата ответа надо просто вызвать sess.save()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
в первом варианте ставь в settimeout задержку равную нулю, т.к. он все равно сработает только после опустошения стека вызовов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы