TypeORM 选择列名的别名

Sho*_*lam 2 mysql node.js typeorm

this.sampleRepo.find (
            {
                
                order: {
                    id: "DESC"
                },
                select: ['id','group']
                
                
            }

    );
Run Code Online (Sandbox Code Playgroud)

这将按预期返回 id 和 group,但是如何将 id 作为 user_id 返回?以及如何从组中选择不同的值?

Art*_*sky 7

只需在您选择的字符串中添加一个别名,例如:

select: ['id AS user_id','group AS user_group']
Run Code Online (Sandbox Code Playgroud)

如果上一个选项不起作用,它应该在 queryBuilder 中起作用:

this.sampleRepo
      .createQueryBuilder('user')
      .orderBy('user.id', 'DESC')
      .select(['id AS user_id','group AS user_group'])
      .getRawMany() // or .getMany()

Run Code Online (Sandbox Code Playgroud)

我已经用我的一个例子(这里的最后一个)做了你需要的 smth但写了这个(更新。用 getRawMany 和 distinct 修复)

getMany(): Promise<UserEntity[]> {
    return this.userRepo.createQueryBuilder('user')
      .where({ username: 'breckhouse0' })
      .select(['DISTINCT (user.username) AS user_name', 'user.id AS user_id'])
      .getRawMany();
  }
Run Code Online (Sandbox Code Playgroud)

这如您所料 -结果