如何解决Mikro-Orm 不创建 sqlite 表
我在 nestjs 中使用 mikro-orm 创建一个 sqlite 数据库。出于某种原因,Mikro-Orm 将创建数据库文件(sandox.sqlite3)但不会在数据库中创建表。我已经创建了一个包含实体的任务模块。
应用模块:
@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 {}
任务服务: 当我发出创建请求时,会收到 201 响应以及我发送的数据。但是数据库中没有创建表。
@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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。