【发布时间】:2021-08-15 15:50:55
【问题描述】:
我正在尝试的一个简单场景,想知道这实际上是如何工作的。
我的路线:
<div class="form">
<h1>Welcome ,<%= USERNAME %> back to the site!</h1>
<a href="/Story/1">Story 1</a>
<a href="/Story/2">Story 2</a>
<a href="/Story/3">Story 3</a>
<a href="/Story/Blog">Blog 3</a>
<p><a href="/logout">Logout</a></p>
</div>
路由处理程序是通用的,我想构建而不是有点具体:
//参数处理:
// 所以目的只是从 URL 中获取通配符部分,并在此中间线中相应地设置 cookie 参数“myString”。
app.param("id", (req, res, next, id) => {
console.log(id);
if ((id === "1") | (id === "2") | (id === "3")) {
res.cookie("myString", "Story");
} else {
res.cookie("myString", "Blog");
}
next();
});
// Generic Route Handler
app.get("/Story/:id", (req, res, next) => {
res.send(` <h1>${req.cookies.myString}=> ${req.params.id}</h1>`);
});
但结果是: 当我点击任何故事链接时,我会收到以下回复:
http://localhost:3000/Story/1 结果是:故事=> 1
我看到我的 cookie 也按预期将“myString”设置为“Story”。
http://localhost:3000/Story/Blog 结果是:故事=> 博客
我已验证,现在我的 cookie 已按预期设置为“博客”)
但上面的结果显示的是 Story => Blog! 我原以为这是 Blog => Blog。
有趣的是,如果我只是刷新页面,那么我会得到预期的结果。
似乎在执行以下代码时 cookie 设置不正确!
res.send(` <h1>${req.cookies.myString}=> ${req.params.id}</h1>`);
有人可以帮我理解这种行为/异步性质吗?
- 谢谢。
【问题讨论】:
标签: javascript node.js express cookies