Node.js Express.js:Cookie被延迟保存

Node.js Express.js:Cookie被延迟保存,node.js,cookies,express,Node.js,Cookies,Express,我认为这是因为Node.js通常是异步的 我正在更改cookie的值,然后呈现一个新页面。但是,在呈现新页面时,页面会显示刚刚覆盖的cookie内容。这就好像饼干被保存得晚了一步 res.cookie('loginid',req.body.name,{maxAge:60000}); res.render('page1'); 在第1页中,我有: <% if(req.cookies.loginid){ %> cookie remembered. Hi, <%= req.cooki

我认为这是因为Node.js通常是异步的

我正在更改cookie的值,然后呈现一个新页面。但是,在呈现新页面时,页面会显示刚刚覆盖的cookie内容。这就好像饼干被保存得晚了一步

res.cookie('loginid',req.body.name,{maxAge:60000});
res.render('page1');
在第1页中,我有:

<% if(req.cookies.loginid){ %>
cookie remembered. Hi, <%= req.cookies.loginid %>! <% } %>
当您的模板(或与此相关的任何其他代码)访问
req.cookies
时,它将访问客户端发送的cookies(因此以前在不同的请求中使用
res.cookie()
)设置的值)

这些cookie独立于您使用
res.cookie()
设置的cookie,因此使用该设置不会在同一请求中更新
req.cookie
中的任何值(您只是告诉Express,当此请求完成时,请在响应中包含一个带有此值的
Set cookie
头)

由于您将
req.body.name
存储为cookie值,因此您可以在呈现模板时使用该值:

res.render('page1', { loginid : req.body.name });
<% if (loginid) { %>
cookie remembered. Hi, <%= loginid %>! <% } %>
在模板中:

res.render('page1', { loginid : req.body.name });
<% if (loginid) { %>
cookie remembered. Hi, <%= loginid %>! <% } %>

cookie记得。你好
(但是,在呈现时,您无法确定您发送回的cookie是否会被客户端实际接受,因此从技术上讲,记住cookie还为时过早)