• 使用QueryBuilder获取值

    使用QueryBuilder获取值

    要从数据库中获取单个结果,例如通过 id 或 name 获取用户,必须使用getOne

    1. const timber = await getRepository(User)
    2. .createQueryBuilder("user")
    3. .where("user.id = :id OR user.name = :name", { id: 1, name: "Timber" })
    4. .getOne();

    要从数据库中获取多个结果,例如,要从数据库中获取所有用户,请使用getMany

    1. const users = await getRepository(User)
    2. .createQueryBuilder("user")
    3. .getMany();

    使用查询构建器查询可以获得两种类型的结果:entitiesraw results。大多数情况下,你只需要从数据库中选择真实实体,例如 users。为此,你可以使用getOnegetMany。但有时你需要选择一些特定的数据,比方说所有sum of all user photos。此数据不是实体,它称为原始数据。要获取原始数据,请使用getRawOnegetRawMany。例如:

    1. const { sum } = await getRepository(User)
    2. .createQueryBuilder("user")
    3. .select("SUM(user.photosCount)", "sum")
    4. .where("user.id = :id", { id: 1 })
    5. .getRawOne();
    1. const photosSums = await getRepository(User)
    2. .createQueryBuilder("user")
    3. .select("user.id")
    4. .addSelect("SUM(user.photosCount)", "sum")
    5. .where("user.id = :id", { id: 1 })
    6. .getRawMany();
    7. // 结果会像这样: [{ id: 1, sum: 25 }, { id: 2, sum: 13 }, ...]