NodeJS GraphQL:如何在不使用graphql-type-json的情况下处理混合了String和JSON的模式?

czfnxgou  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(127)

我是GraphQL的新手,还在学习中。我有一个rest API返回如下响应:

{
    "campaign_types": [
        {
            "name": "USA",
            "scenarios": [
                {
                    "id": "jsdx-sdsd-xsds",
                    "name": "NBA"
                },
                {
                    "id": "jsds-sdfs-xdfd",
                    "name": "NFL"
                }
            ],
            "id:": 0
        },
        {
            "name": "Australia",
            "scenarios": [
                {
                    "id": "jtds-sada-xdfs",
                    "name": "AFL"
                },
                {
                    "id": "klhj-sdfs-fdfs",
                    "name": "NRL"
                }
            ],
            "id:": 1
        }
    ]
}

我想将其转换为另一个应用程序构建版本中的GraphQL API,该版本具有TypeScriptReact前端,因为它仅处理GraphQL API。我的要求是在我的第二个应用程序中,当我调用GraphQL API时,它应返回与其余API相同的API响应。
我得到这个错误时,我已经定义了我的GraphQL模式如下:

type CommsCampaignType {
    id: ID!
    name: String!
    scenarios: [JSON]
}

错误:

Error: Type "JSON" not found in document

我看到一些帖子说要使用grahql-type-json,但如果有办法的话,我想不使用它。我要找的最终结果是在我的UI中,我有一个下拉菜单,其中显示Campaign_Type名称为"美国","澳大利亚",当我选择时,应该显示相应的场景名称"NBA","NFL"和"AFL","NRL"分别在第二个下拉菜单。所以我的GraphQL API查询应该能够产生该结果。
如果有人能提出一个最好的方法,那就太好了。谢谢。

watbbzwu

watbbzwu1#

定义Scenario类型:

type Scenario {
  id: ID!
  name: String!
}

然后在您的CommsCampaignType中使用它:

type CommsCampaignType {
    id: ID!
    name: String!
    scenarios: [Scenario]
}

相关问题