【问题标题】:How to use `pre` in route handler - hapi.js如何在路由处理程序中使用`pre` - hapi.js
【发布时间】:2015-10-04 10:26:03
【问题描述】:

我必须在路由中使用 pre 调用方法。我正在使用hapi-request。我尝试在路由声明中使用 pre,但出现错误。我错过了什么?

我原来的路线:

server.route({ 
    method: 'POST', 
    path: '/searchUser',  
    config: User.searchUser
})

使用 Pre

server.route({ 
    method: 'POST', 
    path: '/searchUser',  
    pre: validateUser, 
    config: User.searchUser
})

错误

Error: Invalid route options (/searchUser) {
  "method": "POST",
  "path": "/searchUser",
  "config": {}
}
←[31m
[1] "pre" is not allowed←[0m   

【问题讨论】:

  • validateUser 长什么样子?

标签: node.js routes hapijs


【解决方案1】:

pre 应该在配置对象中使用。

来自 Hapi 中的 route-prerequisites 文档:

server.route({
    method: 'GET',
    path: '/',
    config: {
        pre: [
            [
                // m1 and m2 executed in parallel
                { method: pre1, assign: 'm1' },
                { method: pre2, assign: 'm2' }
            ],
            { method: pre3, assign: 'm3' },
        ],
        handler: function (request, reply) {
            return reply(request.pre.m3 + '\n');
        }
    }
});

更新路线:

server.route({ 
    method: 'POST', 
    path: '/searchUser', 
    config: {
        handler: User.searchUser, 
        pre: [{ method: validate /* function to be called */ }]
    }
);

【讨论】:

  • 我看不出这与我的回答有何不同。
【解决方案2】:

路由配置对象的属性pre不是函数(here)它是对象数组route-prerequisites

【讨论】:

  • 你应该在你的问题中明确这一点,这将有助于人们回答。 :)
  • 好的。即使我尝试了对象数组,但我得到错误Error: Invalid route options (/test) { "method": "GET", "path": "/test", "pre" ←[31m[1]←[0m: [ {} ] } ←[31m [1] "pre" is not allowed←[0m
猜你喜欢
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 2019-02-22
  • 2011-10-14
  • 2023-02-03
相关资源
最近更新 更多