NestJS/GraphQL:如何返回值与null混合的数组?
解决@nestjs/graphql中数组字段返回null与数组混合的问题
你当前的问题是在定义RoundDto的teams字段时,想要返回[[string, string], null, [string, string], null]这类混合格式,但因为GraphQL类型声明默认不允许数组元素为null,所以抛出Cannot return null for non-nullable field Round.teams.错误。不需要自定义标量,只需调整字段的@Field装饰器配置即可。
修改后的代码
@ObjectType('Round') export class RoundDto { @Field(() => GraphQLInt) round: number; @Field(() => [[GraphQLString]], { nullable: 'items' }) teams: (Nullable<[string, string]>)[]; }
关键说明
{ nullable: 'items' }:这个配置告诉GraphQL,teams数组的元素可以为null,直接解决你遇到的非空字段错误。- TypeScript类型
(Nullable<[string, string]>)[]:确保编译时类型与GraphQL定义一致,外层数组的每个元素要么是长度为2的字符串数组,要么是null。 - 如果需要内层数组的元素也允许为null(比如
[null, "2"]这种场景),可以进一步调整内层字段的nullable配置,不过你的预期格式里内层是完整的字符串对,所以当前配置足够。
内容的提问来源于stack exchange,提问作者Pavlo Naumenko
相关产品推荐
相关产品推荐

