返回介绍

server.method(name, method, [options])

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

注册一个 server method 其中:

  • name - 用于通过 server.methods[name] 调用方法的唯一方法名称。

  • method - 方法函数带有签名 async function(...args, [flags]) 其中:

    • ...args - 方法函数参数(可以是任意数量的参数或无)。
    • flags - 启用缓存时,用于设置可选方法结果标志的对象。 此参数是自动提供的,只能在方法功能中访问/修改。 它不能作为参数传递。
      • ttl - 0 结果有效,但无法缓存。默认为缓存策略。
  • options - (可选) 配置对象:

    • bind - 一个上下文对象在被调用时传递给方法函数(通过 this )。 当方法已经注册,默认为 当前上下文 (通过 [ server.bind() ](#server.bind() 设置)。 如果方法是箭头函数,则忽略。

    • cache - server.cache() 中使用的缓存配置相同。 generateTimeout 选项是必需的。

    • generateKey - 用于从传递给方法函数的参数生成唯一键(用于缓存)的函数( flags 参数不作为输入传递)。 如果函数的参数都是 'string' , 'number''boolean' 类型,服务器将自动生成一个唯一键。 但是,如果该方法使用其他类型的参数, 必须提供密钥生成函数,该函数采用与函数相同的参数并返回唯一字符串 (如果不能生成密钥,则为 null )。

返回值: none.

方法名称可以嵌套 (举例 utils.users.get ) 它将自动在 server.methods (举例 通过 server.methods.utils.users.get 访问) 下创建完整路径.

配置启用缓存时, server.methods[name].cache 被赋予一个具有以下属性和方法的对象: - await drop(...args) - 一个函数,可用于清除给定键的缓存。 - stats - 具有缓存统计信息的对象, 请参阅 catbox 获取统计文档。

单个参数的例子:

const Hapi = require('hapi');

async function example() {

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

  const add = (a, b) => (a + b);
  server.method('sum', add, { cache: { expiresIn: 2000, generateTimeout: 100 } });

  console.log(await server.methods.sum(4, 5));      // 9
}

对象参数的例子:

const Hapi = require('hapi');

async function example() {

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

  const addArray = function (array) {

    let sum = 0;
    array.forEach((item) => {

      sum += item;
    });

    return sum;
  };

  const options = {
    cache: { expiresIn: 2000, generateTimeout: 100 },
    generateKey: (array) => array.join(',')
  };

  server.method('sumObj', addArray, options);

  console.log(await server.methods.sumObj([5, 6]));   // 11
}

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

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

发布评论

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