node.js – hapijs处理程序的多种方法

我使用了快递,在那里你可以传递多个方法来传递一个如下的路线:

app.get('/users/,[
  validator.validate,
  controller.get
]);

然后,每个函数都使用next()回调将控制权传递给数组中的下一个函数.有没有相同的东西可以在hapijs处理程序中完成?我希望我的函数既可以重用也可以像我们对快速路由处理程序一样独立.

谢谢.

最佳答案
hapi有Route Prerequisites,它允许你在实际的处理程序本身之前运行一组类似于处理程序的函数.这两者都是可重用的,并且可以在配置本身之外定义它们.

在request.pre对象上设置的每个pre get中生成的值,以便在处理程序中使用.这是一个例子:

var step1 = function (request, reply) {

    reply('The quick brown fox ');
};

var step2 = function (request, reply) {

    reply('jumped over the lazy dog.');
};

server.route({
    config: {
        pre: [
            step1,
            step2
        ]
    },
    method: 'GET',
    path: '/',
    handler: function (request, reply) {

        var response = request.pre.step1 + request.pre.step2;
        reply(response);
    } 
});

默认情况下,每个pre都将按顺序运行,类似于async包中的async.series / waterfall函数.如果你想让一组pres相互并行运行,只需将它们放在一个数组中,你就会得到像async.parallel这样的东西:

server.route({
    ...
    config: {
        pre: [
            [ step1, step2 ], // these run together
            step3             // and then this one
        ]
    },
    ...
});

转载注明原文:node.js – hapijs处理程序的多种方法 - 代码日志