繁体   English   中英

如何使用自定义返回类型在 type-graphql 中创建 GraphQL 查询

[英]How to create a GraphQL query in type-graphql with a custom return type

我正在尝试创建一个查询两个数据库表并返回一个自定义对象的 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

有任何想法吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM