1

我试图弄清楚如何使用 apollo-graphql 将 mikro-orm 连接到 psql。我正在尝试遵循 Ben Awad 的 lireddit 教程。

目前,我坚持使用配置。

这个代码块违反了 mikro-orm 原则,我不知道如何解决它们。

 const orm = await MikroORM.init<PostgreSqlDriver>(config);
  await orm.getMigrator().up();

const app = express();

const apolloServer = new ApolloServer({
  schema: await buildSchema({
    resolvers: [HelloResolver, PostResolver],
    validate: false
  }),
  context: () => ({ em: orm.em })
})

错误消息说:

'{ schema: any; 类型的参数 上下文:()=> { em:任何;}; }' 不可分配给“配置”类型的参数。类型'{架构:任何;上下文:()=> { em:任何;}; }' 缺少类型 'Config' 的以下属性:logger、debug、cache、formatError 和 6 more.ts(2345) Argument of type '{ resolvers: [typeof HelloResolver, typeof PostResolver]; 验证:布尔值;}' 不可分配给“BuildSchemaOptions”类型的参数。对象字面量只能指定已知的属性,并且在“BuildSchemaOptions”类型中不存在“validate”

我尝试修改 types.ts 配置如下:

import { EntityManager } from "@mikro-orm/postgresql";

export type MyContext = {
    em:  EntityManager
}

这并不能解决任何一个问题。

mikro-orm 文档中有一个示例配置,它定义了如下模式:

const schema: GraphQLSchema = await buildSchema({
        resolvers: [BookResolver, AuthorResolver],
        dateScalarMode: 'isoDate',
      });

为此,它需要:

import { GraphQLSchema } from 'graphql';

当我尝试这个时,我得到与尝试 Ben 使用的方法时相同的错误。

我在resolver/post.ts中使用Ben的例子有问题,如下:

@Resolver()
export class PostResolver {
    @Query(() => [Post])
    posts(@Ctx() { em }: MyContext): Promise<Post[]> {
        return em.find(Post, {});
    }
}

类型“Promise<{}[]>”不可分配给类型“Promise<Post[]>”。
类型“{}[]”不可分配给类型“Post[]”。类型“{}”缺少“Post”类型的以下属性:id、createdAt、updatedAt、title

Graphql 根本不识别后解析器。

有没有人想出如何在这一步完成配置以将 mikro-orm 与 psql 和 apollo graphql 连接起来(进入教程 50 分钟)?

4

0 回答 0