我需要实现一堆在FeathersJS应用程序上执行非常自定义/复杂操作的路由。
其中一条路线是/Category/disableExclusiveContentsOf/:id
。它针对六个数据库表运行查询,以查找与:id
类别相关的行。我绝对不能使用FeathersJS提供的查询抽象。然后,它使用FeathersJS' "本地"用于更新我找到的行的API,以便向客户端触发数据更新事件。
但是,如果我单独使用Express实现路由,那么Feathers身份验证/授权挂钩就不会运行,因此端点不会受到保护,这是必需的。
我如何在FeathersJS应用程序中容纳这些东西?
答案 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
}
});