【问题标题】:GraphQL where is data stored?GraphQL 数据存储在哪里?
【发布时间】:2020-01-07 14:15:35
【问题描述】:

GraphQL 全新。据我了解,它是一种 API 查询语言。好的,我明白了。

今天阅读,GraphQL 可以与数据库一起使用,但它不需要数据库。这后半部分是我不明白的。

如果没有数据库,这些数据存储在哪里?

【问题讨论】:

    标签: graphql graphql-js


    【解决方案1】:

    来自the spec

    GraphQL 不要求实现它的应用服务器使用特定的编程语言或存储系统。相反,应用服务器利用它们的能力并将它们映射到 GraphQL 编码的统一语言、类型系统和哲学。

    GraphQL 响应由一个或多个字段组成。被查询的 GraphQL 服务的模式描述了哪些字段可用以及可以为这些字段提供哪些参数。但是,GraphQL 服务还必须提供代码来解析这些字段(即为其提供值)。这段代码如何获取字段的值,以及它还可能导致什么副作用,完全取决于服务。

    这是一个简单的例子。假设我们有以下架构:

    type Query {
      helloWorld: String
    }
    

    这将让我们编写如下查询:

    query {
      helloWorld
    }
    

    为了使helloWorld 解析为null 以外的其他内容,我们还将为其提供一个解析器 函数:

    function resolve (root, args, ctx, info) {
      return "Hello world!"
    }
    

    在这里,我们对将要解析的值进行了硬编码。不过,我们可以通过多种方式获得价值。例如:

    • 从变量中读取
    • 查询数据库或其他数据存储(如 Redis)
    • 从 API 请求它
    • 从文件系统中读取

    GraphQL 服务通常与数据库或某些 API 交互,但也有与消息队列、IMAP 收件箱、区块链等交互的服务。因此,您的数据几乎可以来自任何地方。

    【讨论】: