返回介绍

route.options.pre

发布于 2024-02-12 19:53:56 字数 1762 浏览 0 评论 0 收藏 0

默认值: none.

pre 选项允许定义在调用处理程序之前执行操作的方法。 这些方法允许将处理程序逻辑分解为更小的,可以跨路由共享的可重用组件,以及提供先决条件操作的更清晰的错误处理(例如从数据库加载所需的参考数据).

pre 被赋予一个有序的方法数组,这些方法按顺序被串行调用。如果 pre 数组包含另一个方法数组作为其元素之一, 这些方法是并行调用的。 请注意,在并行执行期间, 如果任何方法错误, 返回一个 takeover response , 或终止信号, 其他并行方法将继续执行,但一旦完成将被忽略。

pre 可以分配一个混合数组:

  • 包含下面列出的元素的数组,它们是并行执行的。

  • 一个对象带有:

    • method - lifecycle method .
    • assign - 用于在 request.pre 和 [ request.preResponses ](#request.preResponses 中分配方法响应的键名。
    • failAction - 一个 failAction value ,用于确定预处理程序方法抛出错误时要执行的操作。如果指定 assign 并且 failAction 设置不是 'error' ,那么错误将会被分配。
  • 方法函数 - 与包含单个 method 键的对象相同。

请注意,预处理程序方法的行为与返回值时其他 lifecycle methods 的行为方式不同。 该值用于分配相应的 request.prerequest.preResponses (#request.preResponses)属性,而不是该值成为新的响应 payload。 否则,错误处理,takeover response](#takeover-response) 或中止信号的行为与任何其他 lifecycle methods 的行为相同。

const Hapi = require('hapi');
const server = Hapi.server({ port: 80 });

const pre1 = function (request, h) {

  return 'Hello';
};

const pre2 = function (request, h) {

  return 'World';
};

const pre3 = function (request, h) {

  return request.pre.m1 + ' ' + request.pre.m2;
};

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, h) {

      return request.pre.m3 + '!\n';
    }
  }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文