如何将数据从预中间件传递到路由处理程序?

时间:2017-09-12 18:48:37

标签: hapijs hapi.js

我有类似的事先回应

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

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

1 个答案:

答案 0 :(得分: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()方法。

希望这有帮助。