我正在尝试使用 Express 在我的 NodeJs api 中设置一个区域。我有以下要求...
const Zone = require('zone.js/dist/zone-node.js');
以及以下中间件功能...
function setupAuthZone(req, res, next) {
return Zone.current.fork({
name: 'api',
properties: {
id: Math.random()
}
}).run(() => {
next();
})
}
我通过
app.use(setupAuthZone);
当我在我的 api 中调用任何端点时,我得到“无法读取未定义的属性 'fork'”。Zone 对象没有任何悬而未决的东西,当然不是当前属性。
谁能指出我在 NodeJs api 中使用 ZoneJs 的一个工作的、非常简单的例子?我想为每个请求创建一个区域,并在该区域中设置一些变量,并在我的一些控制器操作中将它们拉出来,比如当前经过身份验证的用户。我想像请求上下文一样使用它。
更新
我已经改变了要求
require('zone.js/dist/zone-node.js');
现在我有一个 Zone.current。我不完全了解属性。如果我在我的护照中间件中设置 Zone.current.currentUser,我可以将其拉回其他地方,但我无法访问上面列出的“属性”属性。我在 Zone.current 上没有看到它。另外,如果我将 setupAuthZone 函数更改为
function setupAuthZone(req, res, next) {
return Zone.current.fork({
name: 'api'
})
.run(() => {
Zone.current.id = Math.random();
next();
})
}
稍后我查看 Zone.current.id 时看不到 id 属性。它根本不存在。我可以看到我设置的一些属性,而我看不到其他属性。