1.配置
在app.module.ts中导入配置
// app.module.ts
import mikroConfig from '../mikro-orm.config';
@Module({
imports: [MikroOrmModule.forRoot(mikroConfig)],
})
export class AppModule {}
然后就可以在需要用到crud的service进行依赖注入
import { InjectRepository } from '@mikro-orm/nestjs';
@Injectable()
export class TodosService {
constructor(
private readonly em: EntityManager,
) {}
// ...
}
Respository
在ORM中,一个repository通常负责一个实体对应的数据表。更准确的说,respository是ORM提供的一个数据层访问对象,用来封装某个实体的查询,创建更新删除等数据库操作。
在对应的module写入要绑定的实体类
import { Module } from '@nestjs/common';
import { TodosService } from './todos.service';
import { TodosController } from './todos.controller';
import { MikroOrmModule } from '@mikro-orm/nestjs';
import { Todo } from './entities/todo.entity';
@Module({
imports: [MikroOrmModule.forFeature([Todo])],
controllers: [TodosController],
providers: [TodosService],
})
export class TodosModule {}
然后就可以在使用到repository的service中注入我们想使用的实体类的repository
import { EntityManager, EntityRepository } from '@mikro-orm/postgresql';
import { Todo } from './entities/todo.entity.js';
import { InjectRepository } from '@mikro-orm/nestjs';
@Injectable()
export class TodosService {
constructor(
private readonly em: EntityManager,
@InjectRepository(Todo)
private readonly todoRepository: EntityRepository<Todo>,
) {}
}
查询全部
async findAll(){
return await this.todoRepository.findAll();
}
查询单个
async findOne(id:number){
const todo = await this.todoRepositort.findOne(id);
if(!todo){
throw new NotFoundException();
}
return todo;
}
创建
async create(createTodoDto:Create){
const todo = this.todoRespository.create(createTodoDto);
await this.em.flush();
return todo;
}
修改
update(id:number,updateTodo:UpdateTodo){
const todo = await this.findOne(id);
this.em.assign(todo,);
await this.em.flush();
return todo;
}
删除
async remove(id){
const todo = await this.findOne(id);
this.em.remove(todo);
await this.em.flush();
return todo;
}