Я не могу запросить данные из двух таблиц на typegraphql type-orm - PullRequest
1 голос
/ 29 мая 2020

Я делаю 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(), чтобы он работал? Или неправильно пишу запрос?

1 Ответ

1 голос
/ 30 мая 2020

Вам необходимо написать преобразователи полей, которые разрешают связь между статьей и автором, используя репозиторий TypeORM.

Вы можете увидеть несколько примеров в репозитории: https://github.com/MichalLytek/type-graphql/blob/master/examples/typeorm-basic-usage/resolvers/recipe-resolver.ts#L65 -L76

...