Ошибка GraphQL ‘CannotDetermineGraphQLTypeError: Не удается определить тип вывода GraphQL’ при использовании TypeGraphQL и TypeORM

#typescript #graphql #typeorm #typegraphql #node.js-typeorm

Вопрос:

Я пытаюсь выполнить простой запрос с помощью GraphQL с помощью TypeORM и TypeScript, который извлекал бы каждую запись из таблицы фотографий базы данных, но я получаю эту ошибку:

CannotDetermineGraphQLTypeError: Не удается определить тип вывода GraphQL для «фотографий» класса «photosResolver». Является ли значение, используемое в качестве типа TS или явного типа, оформленным соответствующим декоратором, или это правильное выходное значение?

Как исправить эту ошибку? Что я делаю не так?

индекс.ts

 import "reflect-metadata"
import { createConnection } from "typeorm";
import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import { buildSchema } from "type-graphql";
import { photosResolver } from "./resolvers/photos";

const main = async () => {
  const connection = await createConnection();

  const app = express();
  const apolloServer = new ApolloServer({
    schema: await buildSchema({
      resolvers: [
        photosResolver
      ]
    })
  });

  apolloServer.start().then(() => apolloServer.applyMiddleware({ app }));

  app.listen(4000, () => {
    console.log("Server started on localhost:4000");
  });
  
}

main().catch(err => console.log(err));
 

Объект фотографии

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

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

  @Field(() => String)
  @Column({ length: 20 })
  name: string;
}
 

Распознаватель

 import { Resolver, Query } from "type-graphql";
import { Photo } from "../entity/Photo";

@Resolver()
export class photosResolver {
  @Query(() => [Photo])
  photos() {
    return Photo.find();
  }
}
 

Заранее спасибо!

Комментарии:

1. не уверен, что это исправит, но метод find() должен быть асинхронным и возвращать ожидание фото.find()p

2. @Jerome await возвращает фотографию.Функция find() выдает ошибку: выражения ‘await’ разрешены только в асинхронных функциях и на верхних уровнях модулей.’

3. потому что вам нужно объявить async photo(){return await Photo.find()}