【问题标题】:How can I format my SQL output to match my GraphQL type?如何格式化我的 SQL 输出以匹配我的 GraphQL 类型?
【发布时间】:2019-01-26 04:45:17
【问题描述】:

我用谷歌搜索过,但似乎找不到答案。

我有一个如下所示的 GraphQL 类型:

type Ticket {
    id: Int!
    bandID: Int!
    band: Band
    ticketURL: String!
    price: Int!
    date: String!
  }

我希望能够从 MSSQL、GraphQL 和 JS 中返回类似的内容:

[
  {
    id: 1,
    ticketURL: "https://example.co.uk",
    price: 50,
    date: "2019/01/01",
    band: {
     id: 1,
     name: "Band name"
    }
  }
]

返回这样的数据结构最有效的方法是什么?首先想到的是类似下面的内容,但它似乎如此效率低下且错误。

// Call SQL to get all tickets: "SELECT * FROM Ticket"
// For each ticket
  // Call SQL to get the Band
  // Merge with the ticket obj

【问题讨论】:

  • 恐怕这个问题对于 Stack Overflow 来说太宽泛了。您要么需要自己编写此接口,要么使用可以在 GraphQL 和数据库之间进行一些映射的库之一(有几个,包括我一直在研究的一个在 GitHub 上,如果你想要一些想法)

标签: javascript node.js graphql


【解决方案1】:

一般来说,我会鼓励您不要为您所描述的内容而拍摄。 GraphQL 规范的设计原则鼓励您确保您的 API 逻辑专门针对您的客户的需求,并且如果出现更适合您需求的东西来替换 GraphQL,您应该能够删除 GraphQL 层并替换无论新事物是什么,都无需重写您的逻辑。根据 GraphQL 的发明者的说法,这个特定的请求与 API 的耦合过于紧密。对于大多数人来说,数据库的延迟并不是一个足够大的瓶颈,不需要这种优化。相反,我会鼓励您使用数据加载器(用于缓存和批量请求)并编写您的解析器来调用您的 ORM 或其他任何东西来获取这些数据点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多