NestJS 创建基础 CRUD 服务
NestJS Create Base CRUD Service
我正在用 nestjs 编写我的第一个 REST API。
我有几个实体,我必须为其定义基本的 CRUD 操作。
我想知道是否有一种方法可以创建我可以使用的基本 crud 服务,以便不为所有实体重复相同的代码。
在这个 base-crud 服务中,我将有四个调用存储库的 CRUD 方法,以便实际执行与数据库相关的操作。
基本上我希望有一个 BaseCrudService<T>
而不是 UserService
extends BaseCrudService<UserEntity>
。
这样我就可以在派生的 class 中使用 "override" 方法来执行额外的逻辑业务,而不是调用基本方法来实际插入、删除等
可能吗?如果是这样,你会怎么做?
按如下方式创建 base-crud 服务:
export class BaseCrudService<Entity extends BaseEntity> {
constructor(
public repository: Repository<Entity>,
) { }
async insertAsync(entity: Entity): Promise<InsertResult> {
return this.repository.insert(entity);
}
...
}
而且个人服务扩展了 class :
@Injectable()
export class UserService extends BaseCrudService<UserEntity>{
constructor(
@InjectRepository(UserEntity)
public repository: Repository<UserEntity>,
) {
super(repository);
}
}
Et-voilà 现在您已经处理了插入、删除、更新等......这适用于扩展 class.
的所有服务
按照这个逻辑,您可以轻松创建 BaseCrudController
.
我构建了一个包来帮助创建无继承的 CRUD 服务和控制器https://www.npmjs.com/package/@nestjsx/crud
我正在用 nestjs 编写我的第一个 REST API。
我有几个实体,我必须为其定义基本的 CRUD 操作。 我想知道是否有一种方法可以创建我可以使用的基本 crud 服务,以便不为所有实体重复相同的代码。 在这个 base-crud 服务中,我将有四个调用存储库的 CRUD 方法,以便实际执行与数据库相关的操作。
基本上我希望有一个 BaseCrudService<T>
而不是 UserService
extends BaseCrudService<UserEntity>
。
这样我就可以在派生的 class 中使用 "override" 方法来执行额外的逻辑业务,而不是调用基本方法来实际插入、删除等
可能吗?如果是这样,你会怎么做?
按如下方式创建 base-crud 服务:
export class BaseCrudService<Entity extends BaseEntity> {
constructor(
public repository: Repository<Entity>,
) { }
async insertAsync(entity: Entity): Promise<InsertResult> {
return this.repository.insert(entity);
}
...
}
而且个人服务扩展了 class :
@Injectable()
export class UserService extends BaseCrudService<UserEntity>{
constructor(
@InjectRepository(UserEntity)
public repository: Repository<UserEntity>,
) {
super(repository);
}
}
Et-voilà 现在您已经处理了插入、删除、更新等......这适用于扩展 class.
的所有服务按照这个逻辑,您可以轻松创建 BaseCrudController
.
我构建了一个包来帮助创建无继承的 CRUD 服务和控制器https://www.npmjs.com/package/@nestjsx/crud