node.js - 在 GraphQL 中使用空数组参数初始化对象
问题描述
我有一个Icon实体,它有一个Category列表:
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 客户端中运行突变
mutation
{
createIcon(input:{name: "Ice cream" code: "icecream_Cone" })
{
id
name
categories
{
id
name
}
}
}
我得到错误:
$"不能为不可为空的字段 Icon.categories 返回 null。"$
如何将类别数组初始化为空数组而不是 null?我试图将代码放入createIcon
创建 new 的函数中Icon
,将参数从 input 复制到 new Icon
,将item.categories
数组更改为空Category
数组,然后保存该新项而不是输入。但是,这不起作用,这看起来很奇怪,因为它应该保存空数组。
实体定义有问题吗?
解决方案
推荐阅读
- javascript - Vue 数据未在 DOM 中显示
- android - 锁屏音乐控制器意图
- sharepoint-list - 使用javascript从HTML表单中的复选框向SP列表选择列添加多个值
- javascript - 如果我逐个字符串输入脚本,则脚本可以在浏览器中运行。但它不适用于真实的网站
- vuejs2 - 如何在与服务器通信以获取数据请求时从本地构建运行 Capacitor iOS 应用程序
- php - PHP 登录 nouser
- java - 有没有办法在 JPanel 的扩展类中调用 setBackgroud()
- graphql - 如何在 prisma 查询中创建嵌套连接?
- omnet++ - 如何获取cPacket的始发门?
- php - 我从 PHP 页面向 Siebel 发送 SOAP 请求以插入数据。仅供参考 Seibel 不提供 Web 服务的 WSDL URL