Node.js中的模块作用域-同时Express请求

用户名

我在不同的函数中使用id变量。id在函数外部定义。接收到多个同时请求时,这可能导致变量被覆盖吗?在浏览器中而不是在Node.js中完成此行为时,行为是否相同?

var id;
server.get('/myapp', function (req, res, next) {
    id = uuid.v4();
}
jfriend00

是的,它会引起冲突

如果您的请求处理程序中包含任何异步操作,这些操作允许同时运行多个请求,则为“是”,使用一个以上模块可能会访问的模块级变量将导致冲突,并且一个请求可能被删除另一个人正在使用的变量。

简而言之,不要这样做

模块级变量仅适用于所有请求都可以安全访问和共享的数据。单个请求的数据应在请求处理程序中,或者在请求或响应对象或某个类似类型的对象上,该属性应按请求使用,并且不能在多个请求之间共享。

仅在处理请求期间需要的数据

因此,如果您只需要在此特定请求期间访问某些数据,则可以将其放在请求处理程序内的局部变量中,并将其传递给在处理该请求时可能需要调用的其他任何函数。或者,您可以将其分配为req对象的属性,该属性对于每个单独的请求都是唯一的,然后将该req对象传递给您正在调用的任何其他需要访问数据的函数。

从一个请求到下一个请求所需的数据,但每个用户的数据不同

如果您试图跟踪某个特定客户端从一个请求到另一个请求的某些数据,则根本无法以这种方式存储数据。您可能需要使用会话管理器,以便可以创建一个持久会话,该会话可以与一个特定浏览器从一个请求到另一个请求相关联。express-session是一个流行的会话管理器,它非常容易实现。

会话管理器的工作方式是,给定浏览器第一次访问您的服务器时,会为其分配一个唯一的cookie。该Cookie包含一个加密的会话ID。然后,会话管理器创建一个由该会话ID索引的会话对象。当来自同一浏览器的第二个请求进入时,express-session会获取先前设置的cookie,解密sessionID,查找相应的会话对象,然后让您访问代表该对象存储在会话对象中的任何数据特定用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js-使用Express获取原始请求正文

来自分类Dev

在Node JS中使用Express模块不起作用

来自分类Dev

Node.js:变量作用域和模块关闭

来自分类Dev

express / node.js中的请求之间的同步问题

来自分类Dev

node.js如何处理同时的http请求?

来自分类Dev

使用node.js / express和AngularJS的CORS请求

来自分类Dev

如何在Express Node JS中获取删除请求的参数

来自分类Dev

无法使用Express从Node.js请求对象访问文件

来自分类Dev

使用Node JS和Express JS的HTTPS请求缓慢?

来自分类Dev

如何从node.js中的请求模块获取cookie?

来自分类Dev

使用Express的Node.js:如何重定向POST请求

来自分类Dev

在Node Express JS的请求正文中传递数组

来自分类Dev

Node.js,Express无法路由参数化的GET请求

来自分类Dev

在Node / Express中同时处理客户端请求

来自分类Dev

无法在Node.js / Express中访问请求正文数据

来自分类Dev

node.js + express + thread_a_gogo阻止请求

来自分类Dev

Node.js:变量作用域和模块关闭

来自分类Dev

Node.js,Mongoose和Express 4.0-设置模块化发布请求

来自分类Dev

express / node.js中的请求之间的同步问题

来自分类Dev

无法在Node.js(Express)中提取请求数据

来自分类Dev

如何从Node.js模块中的请求获取变量

来自分类Dev

Node.js Express-代理请求后调用next()

来自分类Dev

Express node.js-请求JSON,异步处理

来自分类Dev

在Node js中。我可以使用“请求”包发送多少个同时请求

来自分类Dev

一个控制器中的多个请求URL映射处理程序在Node Express JS中不起作用

来自分类Dev

代理选项在Node.js的请求模块中不起作用

来自分类Dev

无法从Express Node JS中的模块返回数据

来自分类Dev

Node Express:请求以顶级域为子域??

来自分类Dev

Node.js 和 Android 同时阻止请求

Related 相关文章

  1. 1

    Node.js-使用Express获取原始请求正文

  2. 2

    在Node JS中使用Express模块不起作用

  3. 3

    Node.js:变量作用域和模块关闭

  4. 4

    express / node.js中的请求之间的同步问题

  5. 5

    node.js如何处理同时的http请求?

  6. 6

    使用node.js / express和AngularJS的CORS请求

  7. 7

    如何在Express Node JS中获取删除请求的参数

  8. 8

    无法使用Express从Node.js请求对象访问文件

  9. 9

    使用Node JS和Express JS的HTTPS请求缓慢?

  10. 10

    如何从node.js中的请求模块获取cookie?

  11. 11

    使用Express的Node.js:如何重定向POST请求

  12. 12

    在Node Express JS的请求正文中传递数组

  13. 13

    Node.js,Express无法路由参数化的GET请求

  14. 14

    在Node / Express中同时处理客户端请求

  15. 15

    无法在Node.js / Express中访问请求正文数据

  16. 16

    node.js + express + thread_a_gogo阻止请求

  17. 17

    Node.js:变量作用域和模块关闭

  18. 18

    Node.js,Mongoose和Express 4.0-设置模块化发布请求

  19. 19

    express / node.js中的请求之间的同步问题

  20. 20

    无法在Node.js(Express)中提取请求数据

  21. 21

    如何从Node.js模块中的请求获取变量

  22. 22

    Node.js Express-代理请求后调用next()

  23. 23

    Express node.js-请求JSON,异步处理

  24. 24

    在Node js中。我可以使用“请求”包发送多少个同时请求

  25. 25

    一个控制器中的多个请求URL映射处理程序在Node Express JS中不起作用

  26. 26

    代理选项在Node.js的请求模块中不起作用

  27. 27

    无法从Express Node JS中的模块返回数据

  28. 28

    Node Express:请求以顶级域为子域??

  29. 29

    Node.js 和 Android 同时阻止请求

热门标签

归档