1

GraphQL を使用してデータベースからデータを取得しています。と の 2 種類がありGroupますPerson。グループには、オブジェクトpeopleのリストであるフィールドがありPersonます。

GraphQL の組み込みのintrospectionを使用して、サーバーからスキーマを取得しようとしています。私が抱えている問題は、peopleフィールドがnull不可の型をラップするリスト型をラップするnull不可の型であり、この冗長なクエリを使用する必要があることです。

{
    __type(name: "Group") {
        name
        fields {
            name
            type {
                name
                kind
                ofType {
                    kind
                    name
                    ofType {
                        kind
                        name
                        ofType {
                            kind
                            name
                            ofType {
                                kind
                                name
                            }
                        }
                    }
                }
            }
        }
    }
}

このスキーマを取得するには:

{
    "data": {
        "__type": {
            "name": "Group",
            "fields": [
                {
                    "name": "people",
                    "type": {
                        "name": null,
                        "kind": "NON_NULL",
                        "ofType": {
                            "kind": "LIST",
                            "name": null,
                            "ofType": {
                                "kind": "NON_NULL",
                                "name": null,
                                "ofType": {
                                    "kind": "OBJECT",
                                    "name": "Person",
                                    "ofType": null
                                }
                            }
                        }
                    }
                }
            ]
        }
    }
}

不便で読みにくいクエリであることに加えて、それは一般的ではありません。それを構築するには、スキーマ内のラッパー型の最大深度を知る必要があります。

深さに関係なく、スキーマ内のすべてのラッパー タイプを取得する方法はありますか?

4

1 に答える 1

1

残念ながら、一般的にそれを行う方法はありません。GraphQL は任意の回数だけ List で型をラップすることをサポートしているため、最大深度はありません。したがって、通常は表示されるのは

[String!]!

これも有効なタイプです

[[[[[[[[[[[[String]!]!]!]!]!]!]!]!]!]!]!]!

適切な深さを選択して、それで転がる必要があります。参考までに、公式の「完全な」イントロスペクション クエリは次のようになります深さは7です。

于 2020-05-08T15:56:38.123 に答える