如何在FeathersJS

时间:2016-09-22 06:56:22

标签: feathersjs

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

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

但是,如果我单独使用Express实现路由,那么Feathers身份验证/授权挂钩就不会运行,因此端点不会受到保护,这是必需的。

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

1 个答案:

答案 0 :(得分:8)

您仍然可以使用your own service实施路线,并将:id用作route parameter

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