为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第19天 nest typeorm

标签:
Node.js

课程名称: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
      }
    })
  }

https://img1.sycdn.imooc.com//63fafc940001d54705540388.jpg

在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


https://img1.sycdn.imooc.com//63fafcbd0001e20f08680467.jpg









点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
25
获赞与收藏
19

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消