如何在 FeathersJS 中实现自定义/复杂的操作路线

How to implement custom / complex operation routes in FeathersJS

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

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

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

如何在 FeathersJS 应用程序中容纳此类内容?

您仍然可以使用 your own service and use the :id as route parameter 实现路由:

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

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

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
  }
});