JavaScript/GraphQL 有条件地添加片段

标签 javascript graphql

我有一个向 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/

相关文章:

Javascript如何正确克隆而不修改对象

javascript - 这个解析器扩展功能是如何工作的?

graphql - 如何访问 hasura 中的公共(public) api

graphql - 在graphql模式中,如何创建相同模型的父/子关系?

graphql - 使用 Sapper 刷新预加载数据

sequelize.js - 如何在 apollo graphql 服务器中编写解析 graphql 过滤器

javascript - 为什么 ngSanitize 依赖项会破坏我的应用程序?

javascript - 为什么我无法使用 JSON.parse() 解析此 JSON 字符串

javascript - div 设计问题中的响应式菜单

javascript - 绘制图像函数时出现类型错误