我有一个向 graphQL 端点发送 fetch 请求的 JavaScript 函数。我的目标是根据传递给 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
}
}
}
}
我想添加 BnFields
如果 lang 参数为 getEvent
的片段函数等于 bn
.我知道我可以通过根据 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'
到您与查询一起传递的变量。
关于JavaScript/GraphQL 有条件地添加片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64675181/