【发布时间】:2019-11-25 11:50:41
【问题描述】:
我正在使用 entitymanager.findOne 方法获取对象 ChatRoomEntity。 ChatRoomEntity 具有变量messages,这是一个 OneToMany - ManyToOne 关系。我没有任何问题可以选择,但是如何获取发送消息的用户。它是 MessageEntity 上的一个变量,具有 OneToMany 关系。
所以基本上我想选择一个房间和它的所有消息。但是所有消息也应该在fromUser 上有它们的值。
我这样选择房间:
this.entityManager.findOne(ChatRoomEntity, {where: {id: roomToJoin.id}, relations: ['activeUsers', 'messages']}).then(roomEntity => {
// some code
}
这里是我的实体:
用户实体
@Entity()
export class UserEntity {
@PrimaryGeneratedColumn()
id: number;
@CreateDateColumn()
registrationDate: Date;
@ManyToMany(type => ChatRoomEntity, room => room.activeUsers, {cascade: true})
@JoinTable()
activeChatRooms: ChatRoomEntity[];
@OneToMany(type => ChatRoomMessageEntity, msg => msg.fromUser)
chatRoomMessages: ChatRoomMessageEntity[];
}
聊天室实体
@Entity()
export class ChatRoomEntity {
@PrimaryGeneratedColumn()
id: number;
@Column('varchar', {nullable: true})
title: string;
@OneToMany(type => ChatRoomMessageEntity, chatrmsg => chatrmsg.chatRoom)
messages: ChatRoomMessageEntity[];
@ManyToMany(type => UserEntity, user => user.activeChatRooms)
activeUsers: UserEntity[];
}
ChatRoomMessageEntity
@Entity()
export class ChatRoomMessageEntity {
@PrimaryGeneratedColumn()
id: number;
@Column('varchar', {nullable: true})
message: string;
@CreateDateColumn()
creationDate: Date;
@ManyToOne(type => UserEntity, user => user.chatRoomMessages)
fromUser: UserEntity;
@ManyToOne(type => ChatRoomEntity, chatRoom => chatRoom.messages)
chatRoom: ChatRoomEntity;
}
【问题讨论】: