Rest 在FeathersJS中写入嵌套路径参数

Rest 在FeathersJS中写入嵌套路径参数,rest,feathersjs,Rest,Feathersjs,如何在js中生成多级路径参数,如下所示: api.com/category/categoryId/subcategory/subcategoryId以下内容摘自: 通常情况下,我们发现它们实际上是不需要的,最好是尽量保持路线平坦。例如,像users/:userId/posts这样的东西——尽管对于人类来说读起来很好——实际上并不像已经由现成羽毛支持的等价的/posts?userId=那样容易解析和处理。此外,当通过websocket连接使用羽毛时,这也会更好,因为websocket连接根本没有路

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


api.com/category/categoryId/subcategory/subcategoryId

以下内容摘自:

通常情况下,我们发现它们实际上是不需要的,最好是尽量保持路线平坦。例如,像
users/:userId/posts
这样的东西——尽管对于人类来说读起来很好——实际上并不像已经由现成羽毛支持的等价的
/posts?userId=
那样容易解析和处理。此外,当通过websocket连接使用羽毛时,这也会更好,因为websocket连接根本没有路由概念

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

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


以下资料摘自:

通常情况下,我们发现它们实际上是不需要的,最好是尽量保持路线平坦。例如,像
users/:userId/posts
这样的东西——尽管对于人类来说读起来很好——实际上并不像已经由现成羽毛支持的等价的
/posts?userId=
那样容易解析和处理。此外,当通过websocket连接使用羽毛时,这也会更好,因为websocket连接根本没有路由概念

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

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


postService
是否等同于app.service(“posts”)?如果是,那么为什么您使用
app.service('posts')
而不是
postService
?难道
postService
不等同于app.service('posts')?如果是,那么您为什么使用
app.service('posts')
而不是
postService
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
  }  
})