简而言之:可以将一个关联日志(在整个节点API中)与某个(动态)引用ID相关联吗?
[进一步解释]
所以,情况就是这样:我正在编写一个API,可能同时处理多达数百个请求.它在Node.js和Express中实现.我在整个API中都有大量的日志记录,每个日志都必须有一个唯一的引用ID,以便我可以将多个日志与同一个请求相关联.
我可以这样做的一种方法是随机生成一个字符串并将其作为参数传递给每个函数调用(我将此作为最后的手段).我不想这样做
重申一下,
>请求进来
>随机生成字符串:aljsndci.json
>追加(快递)request.body到aljsndci.json
>在API中执行内部逻辑
>以json格式登录,每个日志必须包含密钥{… file:’aljsndci.json’…}
>追加(快递)对aljsndci.json的回应
>通过快递回应
我偶然发现了像continuation-local-storage这样的解决方案,但是,如何生成一个唯一的字符串(用于命名空间),然后再引用相同的字符串?这里的所有示例都硬编码命名空间的字符串.是否有例子,类似于这里的一个(找到here)
var getNamespace = require('continuation-local-storage').getNamespace;
var session = getNamespace('my session');
var render = require('./lib/render.js')
function finish(response) {
var user = session.get('user');
render({user: user}).pipe(response);
}
而不是var session = getNamespace(‘my session’);,它实际上从这一点调用了一系列回调的名称?像var thisNamespace = getNamespace(this);
基本上,如果我可以为每个后续回调设置一个全局变量,那将解决这个问题
最佳答案 我认为在这个问题中解决了同样的问题:
How to identify request (by ID) through middleware chain in Express.
检查它,如果您有任何疑问,请在此处或其他问题中说出来.