FeathersJS:使用快速路由参数调用服务
FeathersJS: Call service with express route parameters
我有一个这样定义的服务:
app.use(`/teams/:${id}/members`, teamsMembersService);
现在我想从另一个服务调用这个服务。根据文档,我可以使用 app 对象访问不同的服务。
像这样:
let result = await app.service('teams').find();
效果很好。不幸的是,这不是:
let result = await app.service('teams/1/members').find();
因为服务未定义。
如何使用路由参数调用此服务?
await app.service('teams/1/members').find();
将在您使用 REST client 时起作用,否则无效。在服务器上,您可以在 params
:
中传递 id
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 } })
我有一个这样定义的服务:
app.use(`/teams/:${id}/members`, teamsMembersService);
现在我想从另一个服务调用这个服务。根据文档,我可以使用 app 对象访问不同的服务。 像这样:
let result = await app.service('teams').find();
效果很好。不幸的是,这不是:
let result = await app.service('teams/1/members').find();
因为服务未定义。
如何使用路由参数调用此服务?
await app.service('teams/1/members').find();
将在您使用 REST client 时起作用,否则无效。在服务器上,您可以在 params
:
id
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 } })