Graphql(Gatsby.js)中的条件架构类型

时间:2020-08-17 09:56:28

标签: javascript graphql schema gatsby

我正在使用一个外部API,在gatsby构建时将数据注入到graphql中,我们的新系统具有一个名为“值”的属性,该属性取决于称为“类型”的相对属性,“值”属性的架构会有所不同类型。

类型>值

  1. “文本”->字符串
  2. “段落”->字符串
  3. 'HTML'->字符串
  4. “图像”->文件@fileByCustomDirective
  5. 'radio'->字符串
  6. “选择”->字符串
  7. “复选框”-> [String]

上面显示了所有可能的类型字符串以及'value'属性的架构类型。

我不确定这是否可行,但是在createSchemaCustomization函数中,如何定义这样的类型,然后如何在前端查询呢?

这是我的架构的样子,不包括动态逻辑:

type customFields {
        _id: String
        value: String // this should be a array or File depending on the type value!
        type: String
        label: String
        id: String
},

如果找不到解决方案,这是我正在考虑应用的解决方法:

type customFields {
        _id: String
        value: String
        image: File @fileByCustomDirective // possible hack
        values: [String] // possible hack
        type: String
        label: String
        id: String
},

我能想到的现在唯一可行的方法是,通过添加另一个名为“ image”的属性(当值为“ image”时,强制API向我发送类型为“ image”的重复值)类型为“复选框”,尽管感觉确实很麻烦,我希望所有内容都尽可能通过同一个属性。

0 个答案:

没有答案