2017-03-16 58 views
0

我們如何在graphQL中的公共列上進行數據加入。graphQL加入普通列

例如在SQL中:選擇t.name和z.address,其中t.id = z.id;

這是如何由graphQL查詢管理的。

回答

1

這是如何由GraphQL查詢管理的?

簡短回答:這不是(託管)。你必須把它寫在你的解析器中。

你GraphQL模式基本上只是一個代表節點表示在邊緣類型和字段的聲明。 GraphQL是查詢此圖的語言。在架構的每一個邊緣,您都可以編寫一個函數,以便在查詢遍歷該邊時如何獲取數據。這個函數被稱爲「解析器」,只要它返回有效數據,就可以在解析器中放置幾乎任何代碼。這意味着GraphQL完全是,絕對是數據庫無關的。您的解析器負責與您的數據庫交談。

因此,當涉及到SQL和連接時,關注查詢完全是API開發人員的責任。 GraphQL對SQL或連接一無所知,因此這基本上是您必須編寫的應用程序的自定義邏輯。事實證明,構建用於解決GraphQL查詢數據的SQL查詢是非常困難的,而不會遇到像急於獲取太多數據或「N + 1」問題那樣的問題。

開源社區中的一些工具已經出現,可以幫助解決這個問題。這裏有一對夫婦,我會建議在Node.js的空間:

  • DataLoader - 數據庫無關的工具,批處理查詢和緩存個人記錄。
  • Join Monster - 用於高效數據檢索和查詢批處理的SQL定製工具。它檢查每個查詢和您的模式並動態生成SQL查詢。

聲明:我是Join Monster的聯合創始人。