【发布时间】:2020-01-07 14:15:35
【问题描述】:
GraphQL 全新。据我了解,它是一种 API 查询语言。好的,我明白了。
今天阅读,GraphQL 可以与数据库一起使用,但它不需要数据库。这后半部分是我不明白的。
如果没有数据库,这些数据存储在哪里?
【问题讨论】:
标签: graphql graphql-js
GraphQL 全新。据我了解,它是一种 API 查询语言。好的,我明白了。
今天阅读,GraphQL 可以与数据库一起使用,但它不需要数据库。这后半部分是我不明白的。
如果没有数据库,这些数据存储在哪里?
【问题讨论】:
标签: graphql graphql-js
来自the spec:
GraphQL 不要求实现它的应用服务器使用特定的编程语言或存储系统。相反,应用服务器利用它们的能力并将它们映射到 GraphQL 编码的统一语言、类型系统和哲学。
GraphQL 响应由一个或多个字段组成。被查询的 GraphQL 服务的模式描述了哪些字段可用以及可以为这些字段提供哪些参数。但是,GraphQL 服务还必须提供代码来解析这些字段(即为其提供值)。这段代码如何获取字段的值,以及它还可能导致什么副作用,完全取决于服务。
这是一个简单的例子。假设我们有以下架构:
type Query {
helloWorld: String
}
这将让我们编写如下查询:
query {
helloWorld
}
为了使helloWorld 解析为null 以外的其他内容,我们还将为其提供一个解析器 函数:
function resolve (root, args, ctx, info) {
return "Hello world!"
}
在这里,我们对将要解析的值进行了硬编码。不过,我们可以通过多种方式获得价值。例如:
GraphQL 服务通常与数据库或某些 API 交互,但也有与消息队列、IMAP 收件箱、区块链等交互的服务。因此,您的数据几乎可以来自任何地方。
【讨论】: