- 取出关系对象的数据
取出关系对象的数据
在一个查询中加载 photo 及 photo metadata 有两种方法。使用find *或使用QueryBuilder。我们先使用find *方法。 find *方法允许你使用FindOneOptions / FindManyOptions接口指定对象。
import { createConnection } from "typeorm";import { Photo } from "./entity/Photo";import { PhotoMetadata } from "./entity/PhotoMetadata";createConnection(/*...*/).then(async connection => {/*...*/let photoRepository = connection.getRepository(Photo);let photos = await photoRepository.find({ relations: ["metadata"] });}).catch(error => console.log(error));
photos 将包含来自数据库的 photos 数组,每个 photo 将包含其 photo metadata。详细了解本文档中的查找选项。
使用查找选项很简单,但是如果你需要更复杂的查询,则应该使用QueryBuilder。 QueryBuilder允许以更优雅的方式使用更复杂的查询:
import { createConnection } from "typeorm";import { Photo } from "./entity/Photo";import { PhotoMetadata } from "./entity/PhotoMetadata";createConnection(/*...*/).then(async connection => {/*...*/let photos = await connection.getRepository(Photo).createQueryBuilder("photo").innerJoinAndSelect("photo.metadata", "metadata").getMany();}).catch(error => console.log(error));
QueryBuilder允许创建和执行几乎任何复杂性的 SQL 查询。使用QueryBuilder时,请考虑创建 SQL 查询。在此示例中,”photo”和”metadata”是应用于所选 photos 的 别名。你可以使用别名来访问所选数据的列和属性。
