我尝试使用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'未定义"。区域对象没有任何悬挂,当然不是当前属性。
有人能指出我在NodeJs api中使用ZoneJ的一个非常简单的工作原理吗?我想为每个请求创建一个区域,并在该区域中设置一些变量,并在我的一些控制器操作中将其拉出,例如当前经过身份验证的用户。我想像使用请求上下文一样使用它。
更新
我已将要求改为
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属性。它根本不在那里。我可以看到我设置的一些属性,但我无法看到其他属性。