在GraphQL

时间:2019-07-03 13:06:48

标签: node.js typescript graphql typeorm

我有一个图标实体,其中包含类别的列表:

import { Entity, Column, ManyToMany } from "typeorm";
import { ObjectType, Field } from "type-graphql";

import { Base } from "./Base";
import { Category } from "./Category";

@ObjectType()
@Entity()
export class Icon extends Base {

    @Field()
    @Column()
    name: string;

    @Field(() => [Category])
    @ManyToMany(() => Category, category => category.icons)
    categories: Category[];
}

在我的 IconResolver 突变中:

@Mutation(() => Icon!)
  async createIcon(
    @Arg("input") input: CreateIconInput
  ): Promise<Icon> {
    return  Icon.create(input).save();
  }

输入类型为:

@InputType()
class CreateIconInput implements Partial<Icon> {
  @Field() name!: string;
}

如果我在Apollo GraphQL Client中运行突变

mutation
{
createIcon(input:{name: "Ice cream" code: "icecream_Cone" })
  { 
    id 
    name 
    categories
    {
      id 
      name
    } 
  }
}

我得到了错误:

  

$“无法为非空字段Icon.categories返回null。” $

如何将类别数组初始化为空数组而不是null?我试图将代码放入创建新createIcon的{​​{1}}函数中,将参数从输入复制到新Icon,将Icon数组更改为空{ {1}}数组,然后保存该新项目而不是输入。但是,这不起作用,这看起来很奇怪,因为它应该保存空数组。
实体定义有问题吗?

0 个答案:

没有答案