3

我正在尝试使用 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 属性。它根本不存在。我可以看到我设置的一些属性,而我看不到其他属性。

4

0 回答 0