【问题标题】:How to create a GraphQL query in type-graphql with a custom return type如何使用自定义返回类型在 type-graphql 中创建 GraphQL 查询
【发布时间】:2020-12-19 18:28:42
【问题描述】:

我正在尝试创建一个 graphql 查询来查询两个数据库表并返回一个自定义对象。我很难弄清楚如何定义这种自定义类型。

我在 typeorm 中创建了两个实体:Track 和 Vehicle:

import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import { ObjectType, Field, ID } from "type-graphql";

@ObjectType()
@Entity()
export class Track extends BaseEntity {
  @Field(() => ID)
  @PrimaryGeneratedColumn()
  id: number;

  @Field()
  @Column("text", { unique: true })
  trackId: string;

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

  @Field()
  @Column("text", { unique: true })
  name: string;
}
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";
import { ObjectType, Field, ID } from "type-graphql";

@ObjectType()
@Entity()
export class Vehicle extends BaseEntity {
  @Field(() => ID)
  @PrimaryGeneratedColumn()
  id: number;

  @Field()
  @Column("text", { unique: true })
  vehicleId: string;

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

  @Field()
  @Column("text", { unique: true })
  name: string;
}

我想做一个返回如下对象的查询:

interface TracksAndVehicles {
  tracks: Track[];
  vehicles: Vehicle[];

我不知道该怎么做。这是我的解析器:

import { Resolver, Query, Field, ObjectType } from "type-graphql";
import { Track } from "../../entity/Track";
import { Vehicle } from "../../entity/Vehicle";

@ObjectType()
class TracksAndVehicles {
  @Field()
  tracks: Track[];

  @Field()
  vehicles: Vehicle[];
}

@Resolver()
export class GetTracksAndVehiclesResolver {
  @Query(() => TracksAndVehicles)
  async getTracksAndVehicles(): Promise<TracksAndVehicles> {
    const tracks = await Track.find();
    const vehicles = await Vehicle.find();
    return { tracks, vehicles };
  }
}

我收到此错误:Error: You need to provide explicit type for TracksAndVehicles#tracks

有什么想法吗?

【问题讨论】:

    标签: typescript graphql typeorm typegraphql


    【解决方案1】:

    https://typegraphql.com/docs/types-and-fields.html

      @Field(type => [Track])
      tracks: Track[];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-09
      • 2021-08-31
      • 2020-07-04
      • 2019-09-23
      • 2020-07-05
      • 1970-01-01
      • 2017-08-24
      • 2020-05-06
      相关资源
      最近更新 更多