我對GraphQL比較新,我注意到你可以用兩種不同的方式選擇相關的字段。假設我們有一個droids
表和humans
表,而droids
有owner
這是humans
表中的記錄。還有的(至少)兩種方法可以表達這一點:GraphQL:這兩種模式中的任何一種都更好/更糟?
query DroidsQuery {
id
name
owner {
id
}
}
或:
query DroidsQuery {
id
name
ownerId # this resolves to owner.id
}
乍一看,前者似乎更地道,而且很明顯,如果你要選擇的多個領域具有優勢( owner { id name }
與必須製作新的ownerName
,因此您可以執行ownerId ownerName
)。但是,對於ownerId
風格有一定的明確性,因爲您在表達「這是我特別期望您選擇的這種東西」。
此外,從實現的角度看,這似乎是owner { id }
會借給自己的解析器進行不必要的JOIN
,因爲它會轉化owner { id }
爲humans
表(的id
列與一個ownerId
領域,它與自己的解析器知道它不需要JOIN來獲得droids
表的owner_id
列)。
正如我所說,我是GraphQL的新手,所以我確信這個問題有很多細微之處,如果我使用它更長時間,我會很感激。因此,我希望從使用GraphQL的人處獲悉這兩種方法的優缺點。爲了清楚起見(並且爲了避免這個答案被關閉),我正在尋找明確的「這裏是一種方法比另一種方法客觀地壞/好」,而不是主觀的「我更喜歡一種方法」的答案。
謝謝你的詳細答案,但我覺得你所說的是「你可以做到這一點」。事情是,我已經知道我可以這樣做;我真正想要理解的是以這種方式做這種或那種做法的優點/缺點(即權衡)。 – machineghost