feat(database): 配置 MikroORM 实体生成器处理 bigint 类型
- 导入 EntityMetadata 和 Platform 类型定义 - 添加 entityGenerator 配置选项 - 实现 onProcessedMetadata 回调函数 - 将数据库 bigint 类型转换为 TypeScript number 类型 - 保留原始列类型信息用于数据库操作
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
import { defineConfig } from '@mikro-orm/mysql';
|
import { type EntityMetadata, type Platform, defineConfig } from '@mikro-orm/mysql';
|
||||||
import { EntityGenerator } from '@mikro-orm/entity-generator';
|
import { EntityGenerator } from '@mikro-orm/entity-generator';
|
||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
@ -15,4 +15,18 @@ export default defineConfig({
|
|||||||
charset: 'utf8mb4',
|
charset: 'utf8mb4',
|
||||||
multipleStatements: true,
|
multipleStatements: true,
|
||||||
extensions: [EntityGenerator],
|
extensions: [EntityGenerator],
|
||||||
|
// 生成实体时的配置
|
||||||
|
entityGenerator: {
|
||||||
|
// 在元数据处理阶段将 bigint 转换为 number
|
||||||
|
onProcessedMetadata: (metadata: EntityMetadata[], _platform: Platform) => {
|
||||||
|
metadata.forEach((meta) => {
|
||||||
|
Object.values(meta.properties).forEach((prop) => {
|
||||||
|
// 将 bigint 类型转换为 number,但保留 columnTypes 为 bigint
|
||||||
|
if (prop.columnTypes?.[0] === 'bigint' || prop.type === 'bigint') {
|
||||||
|
prop.type = 'number';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user