TypeORM:getRawMany() 和 getMany() 有什么区别?
TypeORM: What is the difference between getRawMany() and getMany()?
我有这个代码:
let otherParticipants = await chatRoomParticipantRepo
.createQueryBuilder("chatRoomParticipant")
.leftJoinAndSelect("chatRoomParticipant.user", "user")
.select("user.connectionId")
.where("chatRoomParticipant.chatRoomId = :chatRoomId AND chatRoomParticipant.userId != :userId")
.setParameters({ chatRoomId: chatRoomId, userId: userId })
.getRawMany();
这给了我这个结果:
[{user_connectionId: 's7p7bUbzt0wudKcxAAAD'}]
如果我用 getMany()
这样做,它会给我一个空数组:
[]
我正在尝试从连接到 chatRoomParticipant
的 user
获取 ID
,但我无法使用此代码做到这一点:
let otherParticipants = await chatRoomParticipantRepo
.createQueryBuilder("chatRoomParticipant")
.leftJoinAndSelect("chatRoomParticipant.user", "user")
.select("user.connectionId")
.where("chatRoomParticipant.chatRoomId = :chatRoomId AND chatRoomParticipant.userId != :userId")
.setParameters({ chatRoomId: chatRoomId, userId: userId })
.getMany(); <-- This gives nothing
为什么会这样?我以为 getRawMany()
只是为了 SUM, COUNT, etc
。在这种情况下,我正在尝试获取也应该与 getMany()
一起使用的 ID?
在你的情况下,你应该使用 getRawMany()
因为你想 select 你的实体的一些指定字段,getMany()
它 returns 实体数组关注
使用 select 查询生成器可以获得两种类型的结果:实体和原始结果。大多数时候,您需要 select 数据库中的真实实体,例如用户。为此,您使用 getOne 和 getMany。但是,有时您需要 select 特定数据,例如所有用户照片的总和。这样的数据不是一个实体,它被称为原始数据。要获取原始数据,您可以使用 getRawOne 和 getRawMany。
- 参考 Typeorm 文档。
希望对您有所帮助
我有这个代码:
let otherParticipants = await chatRoomParticipantRepo
.createQueryBuilder("chatRoomParticipant")
.leftJoinAndSelect("chatRoomParticipant.user", "user")
.select("user.connectionId")
.where("chatRoomParticipant.chatRoomId = :chatRoomId AND chatRoomParticipant.userId != :userId")
.setParameters({ chatRoomId: chatRoomId, userId: userId })
.getRawMany();
这给了我这个结果:
[{user_connectionId: 's7p7bUbzt0wudKcxAAAD'}]
如果我用 getMany()
这样做,它会给我一个空数组:
[]
我正在尝试从连接到 chatRoomParticipant
的 user
获取 ID
,但我无法使用此代码做到这一点:
let otherParticipants = await chatRoomParticipantRepo
.createQueryBuilder("chatRoomParticipant")
.leftJoinAndSelect("chatRoomParticipant.user", "user")
.select("user.connectionId")
.where("chatRoomParticipant.chatRoomId = :chatRoomId AND chatRoomParticipant.userId != :userId")
.setParameters({ chatRoomId: chatRoomId, userId: userId })
.getMany(); <-- This gives nothing
为什么会这样?我以为 getRawMany()
只是为了 SUM, COUNT, etc
。在这种情况下,我正在尝试获取也应该与 getMany()
一起使用的 ID?
在你的情况下,你应该使用 getRawMany()
因为你想 select 你的实体的一些指定字段,getMany()
它 returns 实体数组关注
使用 select 查询生成器可以获得两种类型的结果:实体和原始结果。大多数时候,您需要 select 数据库中的真实实体,例如用户。为此,您使用 getOne 和 getMany。但是,有时您需要 select 特定数据,例如所有用户照片的总和。这样的数据不是一个实体,它被称为原始数据。要获取原始数据,您可以使用 getRawOne 和 getRawMany。
- 参考 Typeorm 文档。
希望对您有所帮助