内省时获取必填/非空字段

时间:2019-12-01 16:20:42

标签: graphql

我正在使用内省性来查询InputType,以一般性地创建用于更改实体的表单。

query introspection($updateInputName: String!) {
  __type(name: $updateInputName) {
    inputFields {
      name
      type {
        name
        kind
        ofType {
          kind
          name
        }
      }
    }
  }
}

据我了解,type.kind信息对于必需/非空字段应该返回NON_NULL。但是我收到了SCALAR,...

如何获取有关查询的inputField的必填字段的信息?

1 个答案:

答案 0 :(得分:1)

如果该字段不可为空,则kind字段将确实解析为NON_NULL。如果看到SCALAR,则该字段为空。

这是每种包装类型组合的内省结果的样子:

Int

"type": {
  "name": "Int",
  "kind": "SCALAR",
  "ofType": null
}

Int!

"type": {
  "name": null,
  "kind": "NON_NULL",
  "ofType": {
    "name": "Int",
    "kind": "SCALAR",
    "ofType": null
  }
}

[Int!]

"type": {
  "name": null,
  "kind": "LIST",
  "ofType": {
    "name": null,
    "kind": "NON_NULL",
    "ofType": {
      "name": "Int",
      "kind": "SCALAR",
      "ofType": null
    }
  },

}

[Int!]!

"type": {
  "name": null,
  "kind": "NON_NULL",
  "ofType": {
    "name": null,
    "kind": "LIST",
    "ofType": {
      "name": null,
      "kind": "NON_NULL",
      "ofType": {
        "name": "Int",
        "kind": "SCALAR",
        "ofType": null
      }
    },
  }
}