Javascript 在req vs res中存储数据
我有一个中间件(在sails.js中,一个基于express的框架),它在数据库中查找某些内容,然后将其存储在对象中,这样我就可以在布局/控制器中使用它 目前,我将其存储在Javascript 在req vs res中存储数据,javascript,node.js,express,sails.js,Javascript,Node.js,Express,Sails.js,我有一个中间件(在sails.js中,一个基于express的框架),它在数据库中查找某些内容,然后将其存储在对象中,这样我就可以在布局/控制器中使用它 目前,我将其存储在req对象中,如下所示: req.someStuff = 'Some stuff'; 然而,我刚刚读到,你也可以这样做: res.locals.someStuff = 'Some stuff'; 有什么区别?两者都设法完成相同的任务。谢谢。请参阅 基本上,您将res.locals传递给渲染引擎(假设您正在使用jade、ej
req
对象中,如下所示:
req.someStuff = 'Some stuff';
然而,我刚刚读到,你也可以这样做:
res.locals.someStuff = 'Some stuff';
有什么区别?两者都设法完成相同的任务。谢谢。请参阅
基本上,您将res.locals传递给渲染引擎(假设您正在使用jade、ejs等)。当它呈现时,它将对全局范围可用,因此您可以按命名方式调用它们(即someStuff
,而不是locals.someStuff
)
因此,res.someStuff在渲染时不可用于全局范围,因此无法通过您使用的任何渲染模板访问(即不能称为someStuff
)
简而言之,它只是提供了一种简单的方法,可以将某些内容传递给渲染模板,并使其可以被全局范围访问
例如(使用ejs)如下
<% if(someStuff) { ... } %>
<!-- or even this -->
<% if(locals.someStuff) { ... } %>
编辑-
我还刚刚意识到你正在发布请求.something vsres.something。您可以通读这些相同的文档以查看它们之间的差异,但基本上一个是传入请求对象,另一个是传出响应对象。(这是http so请求-响应协议)哦,好吧,res.locals只为布局提供方便的变量名。但是输入req.something并不是一件很麻烦的事。我想可能会有更大的区别。我想最好还是坚持req,如果你也在控制器中使用它的话。是的,我已经意识到req代表请求,res代表响应,谢谢。是的,我想你大概知道,但是你说的有点不正确。如果您传递类似funcName(req,resp){..}的内容并继续传递req,resp,当然您可以访问这两个对象(比如从控制器到服务层等等)。但是resp是在页面呈现时被称为/使用的。它接受响应对象上的任何内容,并使其在模板文件中可用。请求。我想说的不是(它来自http请求传入数据上的任何内容),而是req和resp在本地字段上有根本的不同。局部变量只是将某些内容绑定到特定范围的一种简单方法(res.locals-全局视图内模板,app.locals-作用于整个express应用程序)。如果回答了您的问题,请确保将其标记为已完成。