[英]JavaScript/GraphQL add fragments conditionally
我有一個 JavaScript 函數,它向一個 graphQL 端點發送一個 fetch 請求。 我的目標是根據傳遞給 JavaScript 函數的參數向我的 graphQL 查詢添加一個片段,例如,我的函數如下所示:
const getEvent = async (id, lang) => {
const data = await fetchAPI(`
fragment EventFields on Event {
title
slug
date
}
fragment BnFields on Event {
bn {
content
subtitle
}
}
query fetchEvent($id: ID!, $idType: EventIdType!) {
event(id: $id, idType: $idType) {
...EventFields
content
}
}
}
}
如果getEvent
函數的 lang 參數等於bn
我想添加BnFields
片段。 我知道我可以通過根據lang
參數聲明兩個單獨的查詢來實現這一點,但我想知道在 graphQL 本身內部是否有更優化的方法來添加基於變量的片段。 任何幫助將非常感激。
這正是@include
指令的優點:
query fetchEvent($id: ID!, $idType: EventIdType!, $isBn: Boolean!) {
event(id: $id, idType: $idType) {
...EventFields
...BnFields @include(if: $isBn)
content
}
}
然后,將isBn: lang === 'bn'
到與查詢一起傳遞的變量中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.