课程名称:NestJS 入门到实战 前端必学服务端新趋势
课程章节: 第1章
课程讲师:Brian
课程内容
@Injectable
将类定义为提供者
@InjectRepository() 另一方面是 @Inject() 的扩展,它采用当前传递的实体/存储库并使用一些逻辑来创建新的注入令牌.通常,此逻辑是 Repository 有时会添加 connection.此令牌与从 TypeormModule.forFeature() 为同一实体创建的令牌匹配.(旁注:如果传递的实体是存储库,则令牌只是 带有可选连接(如果不是默认连接).
@Injectable() export class UserService { constructor( @InjectRepository(User) private readonly userRepository: Repository<User> ){} findAll(){ return this.userRepository.find() } find(username: string) { return this.userRepository.findOne({where: {username}}) } async create(user: User) { const userTmp = await this.userRepository.create(user) return this.userRepository.save(userTmp) } update(id: number, user:Partial<User>) { return this.userRepository.update(id, user) } remove(id:number){ return this.userRepository.delete(id) } }
relations 表示是否显示 关联数据
async findUserLogs(id: number) { const user = await this.findOne(id) return this.logsRepository.find({ where: { user }, relations: { user: true } }) }
在uservice 里面 可以使用两种方式进行 sql 的查询
findLogsByGroup(id: number) {// return this.logsRepository
// .createQueryBuilder('logs')
// .select('logs.result', 'result')
// .addSelect('COUNT("logs.result")','count')
// .leftJoinAndSelect('logs.user','user')
// .where('user.id = :id',{id})
// .groupBy('logs.result')
// .orderBy('result','DESC')
// .getRawMany()
return this.logsRepository.query('select logs.result as result,count(logs.result) as count from logs,user where user.id = logs.userId and user.id = 2 group by logs.result')
}
一种是 typeorm 提供的 链式 sql
一种是 原生的sql
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦