我无法进行delete突变,导致函数返回错误。
如果我在GraphQL中运行BairroDelete,则由于graphql中的突变会发生错误。
消息:
字段\ BairroDelete \不能有选择,因为类型\“布尔!\没有子字段。,
代码:
import { Resolver, Query, Mutation, Arg } from "type-graphql";
import { Bairro } from "../entities/Bairro";
import { status } from "../enumerador";
@Resolver(of => Bairro)
export class BairroResolver {
@Query(returns => [Bairro])
async Bairros() {
return await Bairro.find();
}
@Mutation(() => Bairro)
async BairroSave(
@Arg("nome") nome : string
)
{
const ativo = await status.Ativo;
const bairro = await Bairro.create({
nome,
status: ativo
}).save()
return bairro;
}
@Mutation(() => Boolean)
async BairroDelete(
@Arg("id") id : string
)
{
const sucesso = await Bairro.delete({ id });
return sucesso; // <<<<<< ERROR HERE
}
}
答案 0 :(得分:0)
字段\ BairroDelete \不能有选择,因为类型\“布尔!\没有子字段。
您需要向我们展示您的graphql突变文档。
您似乎正在执行以下操作:
mutation {
BairroDelete(id: 123) {
status
}
}
这是非法的,因为BairroDelete
返回的是布尔标量,而不是可以从中选择字段的对象类型。
答案 1 :(得分:0)
sucesso
返回的 Bairro.delete
不是布尔类型,它是来自TypeOrm的对象DeleteResult,看起来像这样:
DeleteResult {
raw: OkPacket {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0
},
affected: 0
}
首先,您必须定义删除操作的“成功”,因为它根本不会影响任何行。缺少的是从TypeOrm返回的对象到您希望在Graphql突变中响应的转换。删除与其他操作不同,但是大多数情况下,您会获得实体实例并返回它。