在req vs res中存储数据

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

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

 req.someStuff = 'Some stuff'; 

不过,我刚刚读到,你也可以这样做:

 res.locals.someStuff = 'Some stuff'; 

有什么不同? 两人都能完成同样的任务。 谢谢。

看到这里的文档 。

基本上,你将res.locals传递给渲染引擎(比如说你正在使用jade,ejs等等)。 当它呈现时,它可以在全局范围内使用,所以你可以把它们叫做named(即someStuff而不是locals.someStuff )。

res.someStuff因此在渲染时不会被全局范围使用,所以不能被你使用的任何渲染模板访问(即不能被称为someStuff )。

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

一个例子(使用ejs)会是这样的

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

编辑 – 我也只是意识到你发布req .someStuff vs res .someStuff。 你可以通过阅读那些相同的文档来看到这些差异,但基本上一个是传入请求对象,另一个是传出响应对象。 (这是http请求 – 响应协议)