在req vs res中存储数据

时间:2015-03-25 02:12:31

标签: javascript node.js express sails.js

我有一个中间件(在sails.js中,一个基于 express 的框架)在数据库中查找内容,然后存储它在对象中找到的内容,因此我可以在布局/中使用它控制器。

目前,我将它存储在req对象中,如下所示:

req.someStuff = 'Some stuff';

但是,我刚刚读到你也可以这样做:

res.locals.someStuff = 'Some stuff';

有什么区别?两者都设法完成相同的任务。感谢。

1 个答案:

答案 0 :(得分:1)

the docs here

基本上,你将res.locals传递给渲染引擎(假设你使用的是jade,ejs等)。当它呈现时,它可用于全局范围,因此您可以将它们称为命名(即。someStuff而不是locals.someStuff)。

因此,res.someStuff在渲染时不可用于全局范围,因此无法通过您使用的任何渲染模板访问(即不能将其称为someStuff)。

简而言之,它只是提供了一种简单的方法,可以将某些内容传递给渲染模板,并使其可以通过全局范围访问。

一个例子(使用ejs)就像是

<% if(someStuff) { ... } %>

<!-- or even this -->
<% if(locals.someStuff) { ... } %>

编辑 - 我也刚刚意识到你发布了 req .someStuff vs res .someStuff。您可以通读那些相同的文档来查看它们之间的区别,但基本上一个是传入的请求对象,另一个是传出的响应对象。 (这是http所以请求 - 响应协议)