【问题标题】:Return TypeORM delete mutation返回类型ORM删除突变
【发布时间】:2019-12-26 23:15:26
【问题描述】:

我无法进行删除突变,函数返回时发生错误。

如果我在 GraphQL 中运行 BairroDelete,那么 graphql 中的 Mutation 会发生错误。

消息:

字段\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
  }
}

【问题讨论】:

    标签: typescript graphql typeorm typegraphql


    【解决方案1】:

    Field \ BairroDelete \ 不能有选择,因为类型 \" Boolean! \ 没有子字段。

    您需要向我们展示您的 graphql 变异文档。

    看起来你正在做这样的事情:

    mutation {
      BairroDelete(id: 123) {
        status
      }
    }
    

    这是非法的,因为BairroDelete 返回布尔标量,而不是您可以从中选择字段的对象类型。

    但是,这是合法的:

    mutation {
      BairroDelete(id: 123)
    }
    

    【讨论】:

      【解决方案2】:

      您从Bairro.delete 返回的sucesso 不是布尔类型,它是来自 TypeOrm 的对象 DeleteResult,如下所示:

      DeleteResult {
        raw: OkPacket {
          fieldCount: 0,
          affectedRows: 0,
          insertId: 0,
          serverStatus: 2,
          warningCount: 0,
          message: '',
          protocol41: true,
          changedRows: 0
        },
        affected: 0
      }
      

      首先,您必须为删除操作定义“成功”,因为它可能根本不会影响任何行。缺少的是从 TypeOrm 返回的对象到您愿意在 Graphql 突变中响应的转换。删除与其他操作不同,而大多数情况下,您会取回实体实例并返回它。

      【讨论】:

        猜你喜欢
        • 2019-09-21
        • 2018-08-28
        • 1970-01-01
        • 2018-03-11
        • 2023-01-09
        • 1970-01-01
        • 2019-07-05
        • 2011-10-13
        • 1970-01-01
        相关资源
        最近更新 更多