Reputation: 1025
I am trying to create a graphql query that queries two database tables and returns a custom object. I am having hard time figuring out how to define this custom type.
I have created two entities in typeorm: Track and 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;
}
I want to make a query that returns an object like this:
interface TracksAndVehicles {
tracks: Track[];
vehicles: Vehicle[];
I can't figure out how to do this. This is my resolver:
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 };
}
}
I get this error: Error: You need to provide explicit type for TracksAndVehicles#tracks
Any ideas?
Upvotes: 1
Views: 1394
Reputation: 12077
https://typegraphql.com/docs/types-and-fields.html
@Field(type => [Track])
tracks: Track[];
Upvotes: 4