javascript - 将数据存储在 req 与 res 中

标签 javascript node.js express sails.js

我有一个中间件(在 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/

相关文章:

javascript - 限制段落字符的有效方法(垂直文本溢出)

node.js - 为什么 mongoose.model.create 的回调不是从 Express 3.x HTTP 请求处理程序中执行(实际上 connect-mongodb 是原因)

Node.js/Express.js 无法识别静态路由

node.js - 如何与 Socket.IO 1.x 和 Express 4.x 共享 session ?

javascript - 目标相同类不同id

javascript部门给出错误答案?

javascript - VSCode 是否应该报告从编译中排除的 TS 文件的错误?

javascript - 无法弄清楚为什么页面加载在底部? Angular UI-Router 自动滚动问题

javascript - Angular – 如何使资源全局化?

node.js - 当客户端将不推荐使用的日期格式传递给 Moment 时,向客户端返回 400?