【问题标题】:How to pass data from pre middleware to route handler?如何将数据从预中间件传递到路由处理程序?
【发布时间】:2018-02-21 08:03:37
【问题描述】:

我有类似这样的预响应

function middleware(req: HapiRequest, res: Hapi.ReplyNoContinue) {
    res({data: "something"})
}

稍后我需要从路由处理程序访问对象,我该怎么做?

【问题讨论】:

  • 单身?全局对象?
  • 能否详细说明问题?
  • 据我了解,您正在寻找一个全局对象,对吧?
  • 在预 hapi 中间件之后,我希望访问我到达那里的数据,我需要从路由处理程序访问该数据。所以基本上我需要将数据从预中间件传递给路由处理程序。

标签: hapijs hapi.js


【解决方案1】:

在定义具有先决条件的路线时,您可以为每个先决条件指定一个名称。像这样:

server.route({
        method: `get`,
        path: `/pre`,
        config: {
            pre: [
                {
                    method: function (request, reply) {
                        reply(`pizza`);
                    },
                    assign: `cheekibreeki`
                }
            ]
        },
        handler: function (request, reply) {
            reply(request.pre.cheekibreeki);
        }
});

我创建了一条路线并为其分配了名称cheekibreeki,它的先决条件是回复pizza。然后,在 request.pre['assignedname'] 内的路由处理程序中可以使用先决条件内的回复数据。

另一种方法是使用request.app 对象。

如果您不想继续到路由处理程序,则必须使用reply().takeover() 方法。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2020-01-06
    • 2023-02-17
    • 2016-03-05
    相关资源
    最近更新 更多