【问题标题】:Featherjs - Add custom field to hook context objectFeathersjs - 添加自定义字段以挂钩上下文对象
【发布时间】:2020-03-13 07:47:20
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: feathersjs


    【解决方案1】:

    出于安全原因,只有params.querydata(用于创建、更新和修补)在客户端和服务器之间传递。查询参数可以通过像这样的简单钩子从查询中提取到上下文中(您可以将版本作为__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 没有任何响应头。

    【讨论】:

    • 非常感谢达夫!但我的目标是将版本信息从服务器传递到客户端。据我了解,从客户端发送到服务器时,您的回复将适用。我理解正确吗?
    • 谢谢达夫!它工作得很好。并祝贺 Featherjs 的出色工作!
    猜你喜欢
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    相关资源
    最近更新 更多