Mikro-Orm 没有创建 sqlite table
Mikro-Orm not creating a sqlite table
我在 nestjs 中使用 mikro-orm 创建一个 sqlite 数据库。出于某种原因,Mikro-Orm 将创建数据库文件 (sandox.sqlite3) 但不会在数据库中创建 tables。我创建了一个带有实体的任务模块。
应用程序模块:
@Module({
imports: [
MikroOrmModule.forRoot({
entities: ['./dist/**/entities/*'],
entitiesTs: ['./src/**/entities/*'],
dbName: 'sandbox.sqlite3',
type: 'sqlite',
}),
TasksModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
任务模块:
@Module({
imports: [MikroOrmModule.forFeature([Task])],
controllers: [TasksController],
providers: [TasksService],
})
export class TasksModule {}
任务服务:
当我发出 post 创建请求时,会收到 201 响应以及我发送的数据。但是数据库中没有创建table。
@Injectable()
export class TasksService {
constructor(
@InjectRepository(Task)
private readonly taskRepository: EntityRepository<Task>,
) {}
create(createTaskDto: CreateTaskDto) {
console.log(createTaskDto.name);
return this.taskRepository.create({ ...createTaskDto });
}
findAll() {
return this.taskRepository.findAll();
}
findOne(id: number) {
return this.taskRepository.findOne({ id });
}
async update(id: number, updateTaskDto: UpdateTaskDto) {
const task = await this.taskRepository.findOne({ id });
task.name = updateTaskDto.name ?? task.name;
task.description = updateTaskDto.description ?? task.description;
task.assign({ id });
// return this.taskRepository.(task);
}
remove(id: number) {
// return this.taskRepository.removeAndFlush();
}
}
任务实体:
@Entity()
export class Task extends BaseEntity<Task, 'id'> {
@PrimaryKey()
id: number;
@Property()
name: string;
@Property()
description: string;
}
您需要通过 SchemaGenerator
或迁移手动同步数据库。如果您设置了 CLI,则可以执行 npx mikro-orm schema:update --run
https://mikro-orm.io/docs/faq#how-can-i-synchronize-my-database-schema-with-the-entities
我在 nestjs 中使用 mikro-orm 创建一个 sqlite 数据库。出于某种原因,Mikro-Orm 将创建数据库文件 (sandox.sqlite3) 但不会在数据库中创建 tables。我创建了一个带有实体的任务模块。
应用程序模块:
@Module({
imports: [
MikroOrmModule.forRoot({
entities: ['./dist/**/entities/*'],
entitiesTs: ['./src/**/entities/*'],
dbName: 'sandbox.sqlite3',
type: 'sqlite',
}),
TasksModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
任务模块:
@Module({
imports: [MikroOrmModule.forFeature([Task])],
controllers: [TasksController],
providers: [TasksService],
})
export class TasksModule {}
任务服务: 当我发出 post 创建请求时,会收到 201 响应以及我发送的数据。但是数据库中没有创建table。
@Injectable()
export class TasksService {
constructor(
@InjectRepository(Task)
private readonly taskRepository: EntityRepository<Task>,
) {}
create(createTaskDto: CreateTaskDto) {
console.log(createTaskDto.name);
return this.taskRepository.create({ ...createTaskDto });
}
findAll() {
return this.taskRepository.findAll();
}
findOne(id: number) {
return this.taskRepository.findOne({ id });
}
async update(id: number, updateTaskDto: UpdateTaskDto) {
const task = await this.taskRepository.findOne({ id });
task.name = updateTaskDto.name ?? task.name;
task.description = updateTaskDto.description ?? task.description;
task.assign({ id });
// return this.taskRepository.(task);
}
remove(id: number) {
// return this.taskRepository.removeAndFlush();
}
}
任务实体:
@Entity()
export class Task extends BaseEntity<Task, 'id'> {
@PrimaryKey()
id: number;
@Property()
name: string;
@Property()
description: string;
}
您需要通过 SchemaGenerator
或迁移手动同步数据库。如果您设置了 CLI,则可以执行 npx mikro-orm schema:update --run
https://mikro-orm.io/docs/faq#how-can-i-synchronize-my-database-schema-with-the-entities