Я делаю API graphQl, используя TypeGraphQl с базой данных Postgress и TypeORM.
Я эти две таблицы (сокращенно)
Пользователь
@ObjectType()
@Entity()
export class User extends BaseEntity {
@Field()
@PrimaryGeneratedColumn('uuid')
id!: string;
@OneToMany(() => Article, (article: Article) => article.author)
public articles: Article[];
И статьи написаны пользователем
@ObjectType()
@Entity()
export class Article extends BaseEntity{
@Field()
@PrimaryGeneratedColumn('uuid')
articleId!: string;
@ManyToOne(() => User, (author: User) => author.articles)
author: User;
Проблема Я не могу сделать запрос, который обычно возвращал бы связанную информацию, другими словами, один запрос, который возвращает как статью, так и пользователя, написавшего article.
Resolvers Article
Resolver(() => Article);
export class ArticleResolver {
@Query(() => [Article])
public async getArticles() {
const articles = await Article.find();
return articles;
}
User
Resolver(() => User);
export class RegisterResolver {
@Query(() => [User])
public async getUsers() {
const users = await User.find();
return users;
}
Этот запрос успешно получает статьи
{
getArticles{
articleId
title
cells
}
}
Я хочу сделать запрос, который также получит автора, и наоборот, для пользователей я получу статьи, которые он написал.
Судя по тому, что я искал, это должен быть запрос, но он не распознается на игровой площадке
{
getArticles{
articleId
title
cells
author{
lastName
}
}
}
Я знаю, что мне следует использовать декоратор Field()
для выполнения этих запросов. Но я получаю эту ошибку, если добавляю Error: You need to provide explicit type for Article#author !
из-за ORM. Есть ли способ настроить декоратор Field()
, чтобы он работал? Или неправильно пишу запрос?