我看到rethinkdb现在有一个名为地平线的应用服务器,它的例子包括许多没有任何后端服务器代码的客户端应用程序。
如果我想创建一个带有rethinkdb的REST服务-地平线是否还在增加价值,还是应该直接使用rethinkdb库创建一个标准的node.js rest?
我看到地平线有一些身份验证、授权和权限,这些都是有用的,但我不确定是否将其转换为api而不是标准的web应用程序是否会使地平线弯曲到不应该成为的东西。
发布于 2016-07-30 23:58:19
如果我想用rethinkdb创建一个REST服务,地平线还能增加价值吗?
不,如果您只需要一个REST端点将CRUD操作映射到您的RethinkDB数据,那么Horizon将不会帮助您。
如果您想要websocket w/“实时”功能,并且计划在浏览器中使用Horizon客户端,那么地平线是很棒的。
地平线在如何处理用户和权限方面是固执己见的(它在服务器端为每个应用程序使用不同的用户/权限,而不是使用RethinkDB users表)。
# RethinkDB
r.db('rethinkdb').table('users')
r.db('rethinkdb').table('permissions')
# Horizon
r.db('myapp_internal').table('users')
r.db('myapp_internal').table('users_auth')目前,我正在使用一个使用羽毛设计公共服务的堆栈,这些服务可以通过REST或websocket传输公开。它更复杂,但我可能同时使用羽毛和地平线,但将有一些工作,以正确映射权限跨越两个端点。(加上模式执行.)羽毛支持各种身份验证提供者返回JWT,然后您可以传递到地平线(如果您设置相同的secret_key).
如果您不需要数据库中的实时特性,您可能需要签出PostgREST,因为它已经公开了JWT身份验证,并使用实际的数据库角色进行行级授权。“真理的一个来源”。如果您同时想要REST和GraphQL,可以将它与GraphQL一起使用!此外,现在还可以将JSON数据存储在列中,所以这一切都很好!
这么多选择!
祝好运!
发布于 2016-07-21 19:53:56
您可以将Horizon嵌入到节点应用程序中,并且只使用其特性的一个子集:http://horizon.io/docs/embed/。您应该能够轻松地重新进行身份验证。如果要实现自己的REST,则很难重新获得权限,因为权限系统只控制对集合的访问。
就我个人而言,我怀疑如果您只是为了身份验证而嵌入它,那么它将带来更大的麻烦。
https://stackoverflow.com/questions/38504360
复制相似问题