gpt4 book ai didi

node.js - Node - 延续本地存储

转载 作者:搜寻专家 更新时间:2023-10-31 23:53:20 25 4
gpt4 key购买 nike

我正在尝试使用 continuation-local-storage 包从不易访问的位置访问当前的快速请求/响应。

我创建了以下中间件:

var createNamespace = require('continuation-local-storage').createNamespace,
getNamespace = require('continuation-local-storage').getNamespace;

const domain = 'ns.cls';

exports.configure = function(app) {
createNamespace(domain);

app.use(function(req, res, next) {
exports.set(req, res, "callcontext", { req, res });
next();
});
};

exports.set = function(req, res, name, value) {
var namespace = getNamespace(domain);

namespace.bindEmitter(req);
namespace.bindEmitter(res);

namespace.run(() => namespace.set(name, value));
};

exports.get = function(name) {
var namespace = getNamespace(domain);
return namespace.get(name);
};

exports.getCallContext = function() {
return exports.get("callcontext");
};

但是,当我尝试访问未定义的上下文时:

var localStorage = require('../middleware/local-storage');

module.exports = function(doc, ctx) {
var callContext = localStorage.getCallContext();
console.log("value: " + callContext);
};

有人有什么想法吗?

提前致谢

标记

最佳答案

createNameSpace 应该被调用一次。另外,你在线上有错误

exports.set(req, res, "callcontext", { req, res });

应该是这样的

exports.set(req, res, "callcontext", { key: value });

这是我使用它的方式:
设置

var session = require('continuation-local-storage').createNamespace('session')
app.use(function(req, res, next) {
session.bindEmitter(req);
session.bindEmitter(res);

session.run(function() {
session.set('req', req);
next();
});
});

得到

var session = require('continuation-local-storage').getNamespace('session')
session.get('req')

关于node.js - Node - 延续本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34017888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com