FeathersJS: служба вызовов с параметрами экспресс-маршрута

У меня есть служба, определенная следующим образом:

app.use(`/teams/:${id}/members`, teamsMembersService);

Теперь я хотел бы позвонить в эту службу из другой службы. Согласно документации я могу получить доступ к различным службам, используя объект приложения. Вот так:

let result = await app.service('teams').find();

Это хорошо работает. К сожалению, это не так:

let result = await app.service('teams/1/members').find();

Потому что служба не определена.

Как я могу вызвать эту службу с параметрами маршрута?


person Androidicus    schedule 28.04.2017    source источник


Ответы (1)


await app.service('teams/1/members').find(); будет работать, если вы используете клиент REST, но не иначе. На сервере можно пройти id в params:

app.service(`/teams/:${id}/members`).find({ id })

Для использования через Socket.io (и вообще хорошая идея) стоит добавить параметр в params.query:

app.service(`/teams/:${team_id}/members`).hooks({
  before: {
    find(hook) {
      if(hook.params.team_id) {
        hook.params.query.team_id = hook.params.team_id;
      }
    }
  }
})

Теперь вы можете сделать

app.service(`/teams/:${id}/members`).find({ query: { team_id: id } })
person Daff    schedule 30.04.2017