#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()}