Feathersjs - 添加自定义字段以挂钩上下文对象

Featherjs - Add custom field to hook context object

当在客户端和服务器端使用 feathersjs 时,在应用程序挂钩(在客户端)中,我们收到一个包含多个字段的对象,如服务、方法、路径等。

我想使用 socket io 向该对象添加一个自定义字段。那可能吗?更准确地说,我想向客户端发送前端应用程序的当前版本,以便能够在前端过时(使用 pwa)时强制或建议刷新。

谢谢!

出于安全原因,只有 params.query and data(用于创建、更新和修补)在客户端和服务器之间传递。可以使用像这样的简单挂钩将查询参数从查询中提取到上下文中(您可以在其中将版本作为 __v 查询参数传递):

const setVersion = context => {
  const { __v, ...query } = context.params.query || {};

  context.version = __v;
  // Update `query` with the data without the __v parameter
  context.params.query = query;

  return context;
}

此外,您还可以添加其他参数,例如 extraHeaders 版本号,然后可以 params.headers.

反过来(从服务器发送版本信息)可以通过在 application hook:

中修改 context.result 来完成
const { version } = require('package.json');

app.hooks({
  after: {
    all (context) {
      context.result = {
        ...context.result,
        __v: version
      }
    }
  }
});

由于 websockets 没有任何响应头,因此需要将其添加到返回的数据中。