在使用Hasura graphql模式时如何自定义graphql代码生成器产生的字段的类型

时间:2019-11-29 15:08:28

标签: typescript graphql hasura graphql-codegen

我想在Hasura生成的graphql模式中覆盖一个专用字段的jsonb类型,并通过graphql-code-generator运行。

我有一个jsonb类型的customList字段。 Ths用于包含json对象数组。在带有TypeScript插件的graphql-code-generator上使用时,生成的类型解析为any。我试图弄清楚如何仅使用该特定字段的自定义类型覆盖此内容。

以下代码片段显示了graphql模式的相关部分,并覆盖了目标的graphql类型。到目前为止,我尝试过的所有操作都会导致代码生成错误

GraphQl模式

  //schema.json  
  ...
  {
    "kind": "OBJECT",
    "name": “MyEntity”,
    "description": "columns and relationships of MyEntity",
    "fields": [
        ...
        {
        "name": "customList",
        "description": "",
        "args": [
            {
            "name": "path",
            "description": "JSON select path",
            "type": {
                "kind": "SCALAR",
                "name": "String",
                "ofType": null
            },
            "defaultValue": null
            }
        ],
        "type": {
            "kind": "SCALAR",
            "name": "jsonb",
            "ofType": null
        },
        "isDeprecated": false,
        "deprecationReason": null
        },
     }
  }

目标覆盖类型

//clientTypes.graphql

type ListItem {
  itemId: string!
}

extend type MyEntity {
  ccards: [ListItem!]
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以将代码生成指向一个新文件-假设为my-schema.js,然后按照您希望的方式操作模式。您可以使用任何您喜欢的工具(graphql-toolkit / graphql-compose /直接GraphQLSchema操作)