NestJS Create Base CRUD Service



我正在用nestjs编写我的第一个REST API。

我有几个实体,我必须为其定义基本的 CRUD 操作。 我想知道是否有一种方法可以创建一个我可以使用的基本 crud 服务,以便不对所有实体重复相同的代码。 在这个基本服务中,我将有四个调用存储库的 CRUD 方法,以便实际执行与数据库相关的工作。

基本上我希望有一个BaseCrudService<T>,而不是有一个extends BaseCrudService<UserEntity>UserService。 这样,我可以"覆盖"派生类中的方法以执行额外的逻辑业务,而不是调用基方法实际插入,删除等。

可能吗?如果是这样,你会怎么做?

创建一个基本服务,如下所示:

export class BaseCrudService<Entity extends BaseEntity> {
constructor(
public repository: Repository<Entity>,
) { }
async insertAsync(entity: Entity): Promise<InsertResult> {
return this.repository.insert(entity);
}
...
}

并且让单个服务扩展该类:

@Injectable()
export class UserService extends BaseCrudService<UserEntity>{
constructor(
@InjectRepository(UserEntity)
public repository: Repository<UserEntity>,
) {
super(repository);
}
}

瞧,现在您已经处理了插入,删除,更新等。这适用于所有扩展类的服务。

按照此逻辑,您可以轻松创建BaseCrudController

我构建了一个包,有助于创建 CRUD 服务和控制器,而无需继承 https://www.npmjs.com/package/@nestjsx/crud

最新更新