Я использую экспресс-сеанс, чтобы попытаться использовать сеанс, и, похоже, он не находит и не сохраняет сеанс.
Я ожидаю, что ответ будет увеличиваться после каждого вызова, однако при повторных запросах с Postman или базовым стройным приложением он продолжает возвращать 0.
Как мне заставить его найти уже сохраненный сеанс и вернуть увеличенные значения?
Node.js:
const express = require('express')
const app = express()
const session = require('express-session');
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:5000"); // update to match the domain you will make the request from
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(session({
genid: function(req) {
return 1
},
proxy: true,
secret: "max",
resave: false,
saveUninitialized: true
}));
app.get('/', function (req, res) {
console.log(req.session)
if (!req.session.views) {
req.session.views=0;
}
res.send((req.session.views++).toString());
console.log(req.session)
})
app.listen(3000)
Базовая стройность:
<script>
export let name;
let resp = "";
async function sendReq() {
resp = await fetch("http://localhost:3000/");
console.log(resp);
resp = await resp.text();
console.log(resp);
}
</script>
<main>
<h1>Hello {name}!</h1>
<p>Visit the <a href="https://svelte.dev/tutorial">Svelte tutorial</a> to learn how to build Svelte apps.</p>
<button on:click={sendReq}>Click me</button>
{resp}
</main>
<style>
main {
text-align: center;
padding: 1em;
max-width: 240px;
margin: 0 auto;
}
h1 {
color: #ff3e00;
text-transform: uppercase;
font-size: 4em;
font-weight: 100;
}
@media (min-width: 640px) {
main {
max-width: none;
}
}
</style>
session.save()
. Кроме того, почему вы жестко кодируетеgenId()
, чтобы каждый раз возвращать один и тот же идентификатор? Если у вас нет особой причины для самостоятельного создания идентификатора сеанса, удалите этот метод и дайте поведение по умолчанию работать на вас. - person jfriend00   schedule 13.12.2019