我目前通过添加connectionHandler并为请求运行光纤来拦截对我的应用的请求:
var Fiber = Npm.require('fibers');
WebApp.connectHandlers.use(function (req, res, next) {
Fiber(function() {
// Custom request handling
next();
}).run();
});
作为我的自定义请求处理的一部分,我可以调用在Fiber本身之外定义的函数。有没有办法(没有直接传递连接处理程序中定义的变量),我可以获取并设置仅限于当前请求/光纤的变量?这与在光纤功能中简单设置variable = 'test';
的情况下访问相同变量的每个请求相反。
答案 0 :(得分:3)
没有记录,但Meteor.EnvironmentVariable
似乎就是你想要的。这为您提供了单个光纤本地的动态范围变量。我自己从未使用它,但从查看源代码来看,似乎你会像这样使用它:
var envVar = new Meteor.EnvironmentVariable();
Fiber(function() {
envVar.withValue(5, function() {
subroutine();
});
}).run();
function subroutine() {
console.log(envVar.get()); // 5
}
您还可以查看Meteor源中的this test以获取更多示例。
我还找到this EventedMind screencast,但我无法访问它们。