在FeathersJS中写入嵌套路径参数



如何在羽毛js中生成多级路径参数,如下所示:

api.com/category/catergoryId/subCatergory/subCatergoryId

以下内容摘自该功能常见问题解答条目:

通常情况下,我们发现它们实际上并不需要,而且最好尽可能保持路线平坦。例如,像users/:userId/posts这样的东西——尽管对人类来说读起来很好——实际上并不像Feathers现成支持的等效/posts?userId=<userid>那样容易解析和处理。此外,当通过根本没有路由概念的websocket连接使用Feathers时,这也会更好地工作。

然而,服务的嵌套路由仍然可以通过在嵌套路由上注册现有服务并将路由参数映射到如下查询参数来创建:

app.use('/posts', postService);
app.use('/users', userService);
// re-export the posts service on the /users/:userId/posts route
app.use('/users/:userId/posts', app.service('posts'));
// A hook that updates `data` with the route parameter
function mapUserIdToData(hook) {
if(hook.data && hook.params.userId) {
hook.data.userId = hook.params.userId;
}
}
// For the new route, map the `:userId` route parameter to the query in a hook
app.service('users/:userId/posts').hooks({
before: {
find(hook) {
hook.params.query.userId = hook.params.userId;
},
create: mapUserIdToData,
update: mapUserIdToData,
patch: mapUserIdToData
}  
})

现在转到/users/123/posts将调用postService.find({ query: { userId: 123 } })并返回该用户的所有帖子。

相关内容

  • 没有找到相关文章

最新更新