我想使用typescript将mikroConfig初始化为MikroORM,但我收到此错误消息
错误信息:
'{ readonly entity: readonly [typeof Post]; 只读数据库名称:“lireddit”;只读类型:“postgresql”;只读调试:布尔值;}' 不可分配给类型为 'Configuration<IDatabaseDriver> | 的参数 选项<IDatabaseDriver> | 不明确的'。类型 '{ readonly entity: readonly [typeof Post]; 只读数据库名称:“lireddit”;只读类型:“postgresql”;只读调试:布尔值;}' 不可分配给类型 'Options<IDatabaseDriver>'。类型 '{ readonly entity: readonly [typeof Post]; 只读数据库名称:“lireddit”;只读类型:“postgresql”;只读调试:布尔值;}' 不可分配给类型 'Partial<MikroORMOptions<IDatabaseDriver>>'。财产“实体”的类型是不兼容的。
index.ts:
import { MikroORM } from '@mikro-orm/core';
import { __prod__ } from './constants';
import { Post } from './entities/Post';
import mikroConfig from './mikro-orm.config';
const main = async() => {
const orm = await MikroORM.init(mikroConfig);
const post = orm.em.create(Post, {title:'ez az els? posztom hehe'})
await orm.em.persistAndFlush(post)
}
main().catch((err) => {
console.error(err)
})
还有 mikro-orm.config.ts:
import { Post } from "./entities/Post";
import { __prod__ } from "./constants";
export default {
entities:[Post],
dbName: "lireddit",
type: "postgresql",
debug : !__prod__,
} as const;
谢谢你的帮助,我很痛苦
回答
您定义 ORM 配置的方式是错误的,您应该使用Options核心包中的 type 而不是 const 断言。以这种方式定义配置以获得最佳的智能感知支持(以及摆脱该 TS 错误):
import { Options } from '@mikro-orm/core';
import { Post } from "./entities/Post";
import { __prod__ } from "./constants";
const config: Options = {
entities: [Post],
dbName: "lireddit",
type: "postgresql",
debug : !__prod__,
};
export default config;
THE END
二维码