【问题标题】:Feathersjs socketio how to correctly set params.route?Feathersjs socketio如何正确设置params.route?
【发布时间】:2019-08-28 22:11:33
【问题描述】:

我有一个 Feathersjs API,它使用 REST 可以向http://server.com/service-name/:fieldName 之类的 URL 提供 GET 请求,其中fieldName 有一个字符串值。 API 将fieldName 的值分配给params.query

在开发 React Native 应用程序时,我尝试使用羽毛 socketio 客户端发出相同的请求。请求如下所示:

return this.app.service('service-name/:fieldName').find({
  query:{fieldName='value'}
}).then(response => {
  console.log('data from server', response.data); // ignore this console format
}).catch(error => {
  console.log(error);
});

上面的请求到达了服务器,但是fieldName 的值不是undefined 就是其他不需要的值,因为服务器返回了一个空结果集。我还读到setSlug hook 是一个选项,但我不知道该怎么做。

有人可以通过将请求中fieldName 的实际值发送到服务器来帮助我解决此问题吗?

[编辑] 检查 API 服务器上的日志后,我发现一个 REST API 请求具有正确的 params.route 对象:

object(9) {
    ["query"] => object(0) {}
    ["route"] => object(1) {
        ["fieldName"] => string(5) "value"
    }
    ...

params.route 在 socketio 请求中为空:

object(9) {
    ["query"] => object(0) {}
    ["route"] => object(0) {}
    ["connection"] => object(6) {
        ["provider"] => string(8) "socketio"
        ["payload"] => object(1) {
            ["userId"] => number(3)
        }
    ...

虽然知道问题出在哪里让我松了一口气,但有人能告诉我如何使用 socketio 请求在 React Native 中正确设置 params.route 吗?

【问题讨论】:

    标签: feathersjs feathers-hook


    【解决方案1】:

    您可以像使用 HTTP 一样使用普通路由,它将 params.route 设置为 fieldName

    return this.app.service('service-name/something').find({}).then(response => {
      console.log('data from server', response.data); // ignore this console format
    }).catch(error => {
      console.log(error);
    });
    

    将设置{ params: { route: { fieldName: 'something' } } }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-18
      • 2021-04-15
      • 2019-05-30
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      相关资源
      最近更新 更多