【问题标题】:How to add more parameters on feathersjs service method with primus如何使用primus在feathersjs服务方法上添加更多参数
【发布时间】:2017-02-01 11:31:54
【问题描述】:

我检查了这个链接https://docs.feathersjs.com/real-time/primus.html 来设置服务方法的附加参数,但我不知道如何去做。

下面是我的服务类:

create(id, shellId, params) {
     ...

  }

以下是primus配置:

 app.configure(primus({
    transformer: 'websockets',
    timeout: false
  }, (primus) => {
    primus.library();
    primus.save(path.join(__dirname, '../public/dist/primus.js'));
  }))

在手册中,它提到了如下内容:

primus.use('todos::create', function(socket, done){
    // Exposing a request property to services and hooks
    socket.request.feathers.referrer = socket.request.referrer;
    done();
  });

但我不确定这个函数在做什么。而且我尝试在我的应用程序中添加上面的代码,我会得到socket.request is undefined 错误。在这种情况下如何在服务类上添加更多参数?

【问题讨论】:

  • 你到底想做什么?该示例是Primus middleware,但我不确定它是否符合您的要求。
  • 我正在尝试创建一个类似的方法:create(id, shellId, params)。但是我不确定如何让feathersjs支持这三个参数。

标签: feathersjs primus


【解决方案1】:

您只能使用official service methods 及其签名,在create 的情况下,data 用于整个数据对象,params 用于附加参数。您的服务类 create 看起来像这样:

class MyService {
  create(data, params) {
    const { shellId, id } = data;
    // Do something here

    return Promise.resolve({ /* some data here */ });
  }  
}

app.use('/myservice', new MyService());

在客户端上,您可以像这样通过Feathers clientdirect Primus connection 使用它:

primus.send('myservice::create', {
  id: 'test',
  shellId: 'testing'
}, (error, data) => {
  console.log('Returned data', data);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多