如何在不使用 req 和 res.locals 的情况下在 NodeJS 中实现 ThreadLocal 变量功能?

How to achieve ThreadLocal variable functionality in NodeJS without using req and res.locals?

我有一个场景,我需要为每个请求执行一些业务逻辑和日志记录。所以要存储的数据应该与其他请求互斥。

我不能使用 res.locals 或 req 对象,因为处理应该基于事件开始。并且事件回调不包含这些对象。

基本保存了bookshelfjs的事件

initialize: function(){

  this.on("saving",function(model, attrs, options){
    //do some stuff
    //require data from request
   });
}

您在 Node.JS 中没有主题,您有 continuations

因此,一些要查看的软件包是 continuation-local-storage and request-local-storage

您可以通过(ab)使用 Domain API 实现类似的效果。或者,如果您可以适当地构造闭包或回调参数,则可以完全不需要它。