随时随地访问请求上下

我正在使用Express,每次使用日志来debugging和跟踪我的应用程序时,我需要访问请求中的一些数据(标题,Cookie等)。

与其他语言(即:Java)我有“线程上下文”,我可以把这些数据,所以每当我login的东西访问它。 但是就NodeJS而言,就我所知,没有这样的事情,因为我们只有一个线程。

我试图避免在每个函数传递reqvariables,所以我可以logging该信息。

是否有节点或expressjsfunction,让我得到的数据在任何地方?

JavaScript是单线程的事实并不是一个限制,并不妨碍使用“线程上下文”作为使用“通用可访问状态”的手段。 这些问题将在asynchronous调用一开始就开始,状态将不再符合您的要求。

这是全球状态被认为是“不良习惯”的原因之一,您应该避免这种习惯(尤其是在使用JavaScript和/或Node进行开发时)。

相反,你应该传递一个对象,但不要求。 您应该构造对象或调用您的函数,以便与每个调用链(从请求事件开始并通过所有内部调用)相关的log实例传递。 这个log实例应该用log所需的任何上下文进行初始化,而在你的情况下,请求细节来自原始req

看看Continuation Local Storage,它为asynchronous调用链实现类似于线程上下文的东西: https : //github.com/othiym23/node-continuation-local-storage

此外,还有一些尝试将asynchronous本地存储构build为JavaScript本身的标准化function,但它们仍处于早期阶段:TC39区域提案https://docs.google.com/presentation/d/1H3E2ToJ8VHgZS8eS6bRv-vg5OksObj5wv6gyzJJwOK0