从 graphQL 模式自动创建 ORM 模式和查询

Posted

技术标签:

【中文标题】从 graphQL 模式自动创建 ORM 模式和查询【英文标题】:Create an ORM schema and queries automatically from a graphQL schema 【发布时间】:2016-05-17 01:14:40 【问题描述】:

现在,graphQL 正在流行,一些库已经出现,以使使用 graphQL 和数据库抽象层(如(sequelize 和 bookshelf.js))更容易。

他们似乎都专注于使 ORM 模型与 graphQL 模式一起轻松工作。

我想知道,为什么不反过来呢?一般来说,是否有可能生成脱离 graphQL 的 ORM 模式。

由于我不太了解 graphQL,所以我看不出它是否有可能实现这一点的局限性?然而在我的脑海中,应该可以只定义一个 graphQL 模式,然后将其转换为适合您的数据库的东西。

【问题讨论】:

似乎没有多少项目/人这样做,有什么想法可以被认为是“坏习惯”吗? 【参考方案1】:

我发现了一个最近的项目就是这样做的。它被称为 Gestalt。它现在只适用于 Postgres,但看起来很有希望。查看Getting Started,它的设置非常简单。

只要您安装并运行了 PostgreSQL,您就可以运行以下命令来启动项目:

npm install --global gestalt-cli
createdb blogs
gestalt init blogs
cd blogs
cat > schema.graphql << EOM
type Session implements Node 
  id: ID!


type User implements Node 
  id: ID!
  email: String! @unique
  passwordHash: String! @hidden


type Post implements Node 
  id: ID!
  text: String!
  createdAt: Date!

EOM
gestalt migrate
npm start

万岁!它现在正在运行,您可以在浏览器中打开GraphiQL:

open http://localhost:3000/graphql

现在,您可以随时更改 schema.graphql,然后运行 ​​gestalt migrate 来更新 PostgreSQL 和 GraphQL。

【讨论】:

以上是关于从 graphQL 模式自动创建 ORM 模式和查询的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 protobuf 生成 GraphQL 模式?

我可以从 GraphQL 模式生成 REST 服务吗?

GraphQL 是 ORM 吗?

为中继自动生成 graphql 模式(石墨烯服务器)

ApolloServer 模式选项

无法从模式拼接中的另一个 schema.graphql 文件中的其他 schema.graphql 文件访问共享模式