将 Hasura 用作数据访问层的最佳和正确方法是啥

Posted

技术标签:

【中文标题】将 Hasura 用作数据访问层的最佳和正确方法是啥【英文标题】:What is the best and proper way to user Hasura as a Data Access Layer将 Hasura 用作数据访问层的最佳和正确方法是什么 【发布时间】:2020-02-01 23:31:58 【问题描述】:

我只想将 Hasura 用作 NestJs GraphQL 服务器后面的数据访问层,并保留 Hasura 的所有优势,尤其是订阅的实时功能。

这个想法是在与 Hasura 交互之前构建一个更加定制化的 API 并处理所有业务逻辑。

通过这样做,我是否必须自己在 Nestjs 层处理安全访问,因为我必须使用来自 Nestjs 服务器的 x-hasura-admin-secret 连接到 Hasura 服务器? 你认为这是使用 Hasura 的好方法吗?

在可扩展架构中是否有任何其他替代方案使用 Hasura 作为数据访问层?

谢谢

【问题讨论】:

FWIW,Prisma 有很多与 Hasura 相同的功能,包括订阅支持,我认为它可能是 better fit for this sort of architecture。 【参考方案1】:

当然你要对 NestJS 层的安全负责,但我猜你的意思是身份验证。如果这是真的,那么这一切都取决于您计划使用的身份验证。

如果您希望使用 JWT 或 Webhooks 实现身份验证(请参阅此 article 以获取解释),我建议让 Hasura 处理它,在这种情况下,您的附加层只会将请求转发给 Hasura 而无需需要提供X-Hasura-Admin-Secret

据我所知,人们正在使用他们的Remote Schemas 功能将“Hasura 层”添加到他们已经存在或公共的 GraphQL API 以完成Schema Stitching。

我们能否进一步了解您希望添加图层的原因?我很确定 Hasura 提供了定义自定义查询和聚合查询的方法,并且根据我的经验提供了充足的查询/突变。此外,它还提供您可能会感兴趣的其他功能(订阅、活动...)

【讨论】:

以上是关于将 Hasura 用作数据访问层的最佳和正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

在 winforms 和 web 应用程序之间共享数据层和模型层的最佳方法

能够将 Mat 对象用作 IplImage 对象的最佳方法是啥,反之亦然?

业务逻辑和数据访问层的循环依赖

在 Ruby/Rails 中隔离数据访问层的最佳实践

hasura graphql 角色访问控制

在 datastax 图中使用 gremlin 访问 Solr 的最佳方法