GraphQL 数据存储在哪里?
GraphQL where is data stored?
GraphQL 的全新内容。据我了解,它是 API 的查询语言。好的,我明白了。
今天阅读,GraphQL 可以与数据库一起使用,但它不需要数据库。这后面的部分是我不明白的。
如果没有数据库,这些数据存储在哪里?
来自the spec:
GraphQL does not mandate a particular programming language or storage system for application servers that implement it. Instead, application servers take their capabilities and map them to a uniform language, type system, and philosophy that GraphQL encodes.
GraphQL 响应由一个或多个字段组成。被查询的 GraphQL 服务的模式描述了哪些字段可用以及可以为这些字段提供哪些参数。然而,GraphQL 服务还必须提供代码来 resolve 这些字段(即为其提供一个值)。此代码如何获取字段的值,以及它可能产生的副作用,完全取决于服务。
这是一个简单的例子。假设我们有以下架构:
type Query {
helloWorld: String
}
这样我们就可以编写如下查询:
query {
helloWorld
}
为了让 helloWorld
解析为 null
以外的其他内容,我们还将为其提供 resolver 函数:
function resolve (root, args, ctx, info) {
return "Hello world!"
}
在这里,我们对将要解析的值进行了硬编码。不过,我们可以通过多种方式获得价值。例如:
- 从变量中读取它
- 查询数据库或其他数据存储,如 Redis
- 从 API
请求它
- 从文件系统中读取
GraphQL 服务通常与数据库或某些 API 交互,但也有与消息队列、IMAP 收件箱、区块链等接口的服务。因此,您的数据几乎可以来自任何地方。
GraphQL 的全新内容。据我了解,它是 API 的查询语言。好的,我明白了。
今天阅读,GraphQL 可以与数据库一起使用,但它不需要数据库。这后面的部分是我不明白的。
如果没有数据库,这些数据存储在哪里?
来自the spec:
GraphQL does not mandate a particular programming language or storage system for application servers that implement it. Instead, application servers take their capabilities and map them to a uniform language, type system, and philosophy that GraphQL encodes.
GraphQL 响应由一个或多个字段组成。被查询的 GraphQL 服务的模式描述了哪些字段可用以及可以为这些字段提供哪些参数。然而,GraphQL 服务还必须提供代码来 resolve 这些字段(即为其提供一个值)。此代码如何获取字段的值,以及它可能产生的副作用,完全取决于服务。
这是一个简单的例子。假设我们有以下架构:
type Query {
helloWorld: String
}
这样我们就可以编写如下查询:
query {
helloWorld
}
为了让 helloWorld
解析为 null
以外的其他内容,我们还将为其提供 resolver 函数:
function resolve (root, args, ctx, info) {
return "Hello world!"
}
在这里,我们对将要解析的值进行了硬编码。不过,我们可以通过多种方式获得价值。例如:
- 从变量中读取它
- 查询数据库或其他数据存储,如 Redis
- 从 API 请求它
- 从文件系统中读取
GraphQL 服务通常与数据库或某些 API 交互,但也有与消息队列、IMAP 收件箱、区块链等接口的服务。因此,您的数据几乎可以来自任何地方。