4

我需要实现一堆在 FeathersJS 应用程序上执行非常自定义/复杂操作的路由。

其中一条路线是/Category/disableExclusiveContentsOf/:id. 它针对六个数据库表运行查询,以查找与该类别:id完全相关的行。我绝对不能使用 FeathersJS 提供的查询抽象来做到这一点。然后,它使用 FeathersJS 的“本地”API 来更新我找到的行,以便向客户端触发数据更新事件。

但是,如果我单独使用 Express 实现路由,Feathers 身份验证/授权钩子将不会运行,因此端点不会受到保护,这是一个要求。

如何在 FeathersJS 应用程序中容纳这些东西?

4

1 回答 1

12

您仍然可以使用自己的服务实现路由并使用:idas路由参数

app.use('/Category/disableExclusiveContentsOf/:id', {
  find() {
    // do complex stuff here
  }
});

我建议更改的一件事是 URL 似乎是动作而不是面向资源的。这意味着有人可以通过 GET 请求更改您的应用程序数据,这通常被认为不是一个好的做法(例如,在某些情况下,Google 爬虫进入并删除/更改了一堆东西)。

Feathers 鼓励您考虑资源而不是自定义路线和操作。在您的情况下,您将获得一项ExclusiveContents服务,您可以POST

app.use('/Category/ExclusiveContents/:categoryId', {
  create(data, params) {
    // do complex stuff here
    params.categoryId // the id of the category
    data // -> additional data from the POST request
  }
});
于 2016-09-22T14:09:42.113 回答