能否向GraphQL Nest.js解析器发送含null值的数组?
问题描述
我能否实现以下操作?我在输入类型中使用了如下代码:
@Field(() => [String], { nullable: true, }) date: string[];
当我在date字段中发送包含null元素的数组(示例:date: ["2023-02-13 00:00:00", null, null, "2023-02-13 00:00:00"])时,出现错误:Error: Expected value of type "String!", found null。请问我能否发送部分位置为null的数组?
解决方案
可以发送包含null元素的数组,但你当前的配置只允许整个数组为null,而非数组内的元素为null。
你现在的代码中,nullable: true的作用是允许date字段本身为null(比如不传这个字段,或者直接传null),但数组里的每个元素被定义为非空的String!类型,所以当你传入null元素时会触发类型校验错误。
要让数组元素支持null,需要修改@Field的nullable配置:
- 如果只想允许数组元素为
null,设置nullable: 'items' - 如果同时允许整个数组为
null且元素为null,设置nullable: 'itemsAndList'
修改后的代码示例:
@Field(() => [String], { // 允许数组元素为null,同时允许整个数组为null nullable: 'itemsAndList', }) date: (string | null)[];
或者:
@Field(() => [String], { // 仅允许数组元素为null,数组本身必须存在 nullable: 'items', }) date: (string | null)[];
这样配置后,GraphQL会将数组类型解析为[String](元素可为null),而非[String!](元素不可为null),就能正常接收包含null元素的数组了。
内容的提问来源于stack exchange,提问作者kedO52
相关产品推荐
相关产品推荐

