NestJS创建基础CRUD服务

时间:2018-06-27 06:44:12

标签: nestjs

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

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

基本上,我希望拥有BaseCrudService<T>,而不希望拥有UserService的{​​{1}}。 这样,我可以“重写”派生类中的方法来进行额外的逻辑处理,而不是调用基本方法来实际插入,删除等。

有可能吗?如果是这样,您将如何去做?

2 个答案:

答案 0 :(得分:9)

创建如下基本服务:

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);
  }
}

Et-voilà现在您已经完成了插入,删除,更新等操作,这对于扩展该类的所有服务都是如此。

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

答案 1 :(得分:1)

我已经构建了一个软件包,该软件包可以帮助创建CRUD服务和控制器而无需继承https://www.npmjs.com/package/@nestjsx/crud