首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Typeorm从Postgres数据库返回ROW_NUMBER()

要在使用Typeorm查询Postgres数据库时返回 ROW_NUMBER(),您可以使用QueryBuilder来构建自定义查询

假设您有一个名为 users 的表,包含 id, nameage 字段。这个示例说明如何返回每个按年龄排序的用户行的行号:

  1. 首先,确保已安装必要的软件包:
代码语言:javascript
复制
npm install typeorm pg
  1. 在Typeorm实体文件(例如 user.entity.ts)中定义一个 User 实体:
代码语言:javascript
复制
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity("users")
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  age: number;
}
  1. 在查询中使用QueryBuilder来获取每个用户的行号:
代码语言:javascript
复制
import { getRepository, QueryBuilder } from "typeorm";
import { User } from "./user.entity";

async function getUsersWithRowNumber() {
  const userRepository = getRepository(User);

  const usersWithRowNumber = await userRepository
    .createQueryBuilder("user")
    .select("ROW_NUMBER() OVER (ORDER BY user.age)", "row_number")
    .addSelect("user.id", "id")
    .addSelect("user.name", "name")
    .addSelect("user.age", "age")
    .getRawMany();

  return usersWithRowNumber;
}

在此示例中,我们使用 createQueryBuilder 方法构建查询,使用 ROW_NUMBER() OVER (ORDER BY user.age) 函数为每行生成一个基于年龄排序的行号。然后,我们选择所需的列并将结果作为原始结果(包含行号)返回。

getUsersWithRowNumber 函数将返回一个对象数组,每个对象都包含 row_numberidnameage 属性。

注意:这是一个特定于 Postgres 的查询,因为 ROW_NUMBER() 是 Postgres 的窗口函数。在使用其他数据库时,可能需要调整查询以适应特定的数据库函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券