Sea*_*ean 6 postgresql typeorm nestjs
User
我有一个从到 的OneToMany 关系Message
。
当我使用消息插入注册用户时,它将用户添加到表中User
,并将消息添加到Message
表中并userId
指向用户的 id。
这是使用以下设置自动完成的。
User
实体:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
@JoinTable()
@OneToMany((type) => Message, (message) => message.user, {
cascade: true,
})
messages: Message[];
}
Run Code Online (Sandbox Code Playgroud)
Message
实体:
@Entity()
export class Message {
@PrimaryGeneratedColumn()
id: number;
@Column()
text: string;
@ManyToOne((type) => User, (user) => user.messages, { eager: true })
user: User[];
}
Run Code Online (Sandbox Code Playgroud)
如果我想通过以下方式查找来自用户的所有消息userId
:
const existing_msgs = await this.messageRepository.find({
where: { userId: user.id },
});
Run Code Online (Sandbox Code Playgroud)
它告诉我它找不到该userId
列,这是可以理解的,因为我没有专门包含userId
该Message
实体。
但在这种情况下我们该如何查询呢?
正如这篇文章中提到的,您必须在 Manytoone 之后添加装饰器 @JoinColumn。这将加入该列,您将能够使用以下命令执行您想要的查询:
const existing_msgs = await this.messageRepository.find({
where: { user: { id: user.id }},
});
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于 id 等主列。
你的消息表将是:
@Entity()
export class Message {
@PrimaryGeneratedColumn()
id: number;
@Column()
text: string;
@ManyToOne((type) => User, (user) => user.messages, { eager: true })
@JoinColumn() // <-- Add this
user: User[];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8302 次 |
最近记录: |