我有一个中间件(在 sails.js 中,一个基于 express 的框架),它在数据库中查找某些内容,然后将找到的内容存储在对象中,因此我可以在布局/中使用它 Controller 。
目前,我将其存储在 req
对象中,如下所示:
req.someStuff = 'Some stuff';
但是,我刚刚读到您也可以这样做:
res.locals.someStuff = 'Some stuff';
有什么区别?两者都设法完成相同的任务。谢谢。
最佳答案
参见the docs here 。
基本上,您将 res.locals 传递给渲染引擎(假设您正在使用 jade、ejs 等)。当它呈现时,它就可以在全局范围内使用,因此您可以按命名方式调用它们(即 someStuff
而不是 locals.someStuff
)。
res.someStuff 因此在渲染时不可用于全局范围,因此无法通过您使用的任何渲染模板访问(即不能称为 someStuff
)。
简而言之,它只是提供了一种简单的方法来将某些内容传递给渲染模板并使其可由全局范围访问。
一个示例(使用 ejs)类似于
<% if(someStuff) { ... } %>
<!-- or even this -->
<% if(locals.someStuff) { ... } %>
编辑- 我还刚刚意识到您正在发布 req.someStuff 与 res.someStuff。您可以通读这些相同的文档以了解它们之间的区别,但基本上一个是传入请求对象,另一个是传出响应对象。 (这是http所以请求响应协议(protocol))
关于javascript - 将数据存储在 req 与 res 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29246309/