我试图弄清楚如何使用 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 分钟)?