cool-admin框架后端使用-node版本,三种方式中的repository方式使用

  • Post author:
  • Post category:其他


一些简单的查询可以用find(),但是如果想增加其他条件,

那么就要用到createQueryBuilder

我已经新增一个模块:portal,你可以放在你自己的模块里

有几种方法可以创建Query Builder,例: connection,entity manager,repository,具体可以看我另外一篇讲解;

服务类这种方式实例化,实际上是用到typeorm的 repository方式创建Query Builder

@InjectEntityModel(DzhPortalFieldsEntity)
dzhPortalFieldsEntity: Repository<DzhPortalFieldsEntity>;




下面开始说cooladmin上怎么用repository方式创建Query Builder



1.新增一个实体类,路径:src/modules/portal/entity/fields.ts

在这里插入图片描述

import { EntityModel } from '@midwayjs/orm';
import { BaseEntity } from '@cool-midway/core';
import { Column } from 'typeorm';

/**
 * 描述
 */
@EntityModel('dzh_portal_fields')
export class DzhPortalFieldsEntity extends BaseEntity {
    
  @Column({ comment: '模型id' })
  modelId: string;

  @Column({ comment: '字段名称' })
  fieldName: string;

  @Column({ comment: '字段符号' })
  fieldUnique: string;

  @Column({ comment: '字段序号' })
  fieldNum: string;

  @Column({ comment: '字段类型' })
  fieldType: string;

  @Column({ comment: '排序', default: 0 })
  orderNum: number;

  @Column({ comment: '状态 0:禁用 1:启用', default: 1, type: 'tinyint' })
  status: number;

  
  modelName:string

}



2.新增一个控制器,路径:src/modules/portal/controller/admin/fields.ts

在这里插入图片描述

import { Provide } from '@midwayjs/decorator';
import { CoolController, BaseController } from '@cool-midway/core';
import { DzhPortalFieldsEntity } from '../../entity/fields';
import { DzhportalFieldService } from '../../service/fields';
import { DzhProtalModelEntity } from '../../entity/model';

/**
 * 描述
 */
@Provide()
@CoolController({
  api: ['add', 'delete', 'update', 'info', 'list', 'page'],
  entity: DzhPortalFieldsEntity,
  service:DzhportalFieldService,

})
export class DzhPortalFieldController extends BaseController {
	
  @Inject()
  dzhportalFieldService:DzhportalFieldService //注入实例

  async getList(param){
  	//调用服务类的方法
    const list = await this.dzhportalFieldService.getLIst(param)
    return this.ok(list)
  }
}



3.新增一个服务类,路径:src/modules/portal/service/fields.ts

在这里插入图片描述

import { Provide } from '@midwayjs/decorator';
import { BaseService } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/orm';
import { Repository } from 'typeorm';
import { DzhPortalFieldsEntity } from '../entity/fields';

/**
 * 描述
 */
@Provide()
export class DzhportalFieldService extends BaseService {
  @InjectEntityModel(DzhPortalFieldsEntity)
  dzhPortalFieldsEntity: Repository<DzhPortalFieldsEntity>;

  /**
   * 描述
   */
  async getList(param) {
  	//createQueryBuilder("fields"),指定别名 fields
  	//where条件:查询fields.fieldType 等于 param.fieldType
  	//orderBy排序:fields.fieldNum倒序
    const fieldInfo = await this.dzhPortalFieldsEntity.createQueryBuilder("fields")
    .where('fields.fieldType = :fieldType',{fieldType:param.fieldType})
    .orderBy('fields.fieldNum',"DESC")
    .getMany()
    
    return fieldInfo
  }
}



版权声明:本文为u014617119原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。