簡體   English   中英

JavaScript/GraphQL 有條件地添加片段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM