如何格式化SQL输出以匹配GraphQL类型?

时间:2019-01-25 15:42:28

标签: javascript node.js graphql

我已经为此找到了一个Google,但似乎找不到答案。

我有一个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

1 个答案:

答案 0 :(得分:0)

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