我应该如何在 nestjs typeorm 中制作映射 table 关系逻辑?
How should i make mapping table relationship logic in the nestjs typeorm?
我写信是因为我在处理映射时遇到了问题 table。在网页上创建用户时,我想把现有的信息和数据称为设备。每个用户可以从多个设备开始,所以他们创建了一个像图片一样的映射table来解决N:M关系。
但是,为了将数据放入typeorm中的映射table中,您必须首先创建一个用户对象和一个项目对象。将循环次数设置为用户设置的设备数以查找从网络上收到的设备号后,我们正在创建一个设备对象并将其插入映射table.
有没有比我现在做的更好的方法?
await Promise.all(
items.map(async (element) => {
const uItem = new UserItem();
uItem.item = element.item;
uItem.user = user;
uItem.period = element.period;
await transactionManager.save(uItem);
})
);
typeORM 有一个简单的解决方案
所以你像这样定义你的 2 个主要实体
@Entity()
export class Item{
@PrimaryGeneratedColumn('uuid')
id: string; // or whatever you like
@OneToMany(() => UserItems, userItem => userItem.item, {
nullable: true,
cascade: true,
})
userItems: UserItem[];
...
@Entity()
export class User{
@PrimaryGeneratedColumn('uuid')
id: string; // or whatever you like
@OneToMany(() => UserItems, userItem => userItem.user, {
nullable: true,
cascade: true,
})
userItems: UserItem[];
...
您的映射 class 如下:
@Entity()
export class UserItem{
@PrimaryGeneratedColumn('uuid')
id: string; // or whatever you like
@ManyToOne(() => User, {
onDelete: 'CASCADE', // decide on delete logic
})
user: User;
@ManyToOne(() => Item, {
onDelete: 'CASCADE', // decide on delete logic
})
item: Item;
...
我写信是因为我在处理映射时遇到了问题 table。在网页上创建用户时,我想把现有的信息和数据称为设备。每个用户可以从多个设备开始,所以他们创建了一个像图片一样的映射table来解决N:M关系。
但是,为了将数据放入typeorm中的映射table中,您必须首先创建一个用户对象和一个项目对象。将循环次数设置为用户设置的设备数以查找从网络上收到的设备号后,我们正在创建一个设备对象并将其插入映射table.
有没有比我现在做的更好的方法?
await Promise.all(
items.map(async (element) => {
const uItem = new UserItem();
uItem.item = element.item;
uItem.user = user;
uItem.period = element.period;
await transactionManager.save(uItem);
})
);
typeORM 有一个简单的解决方案 所以你像这样定义你的 2 个主要实体
@Entity()
export class Item{
@PrimaryGeneratedColumn('uuid')
id: string; // or whatever you like
@OneToMany(() => UserItems, userItem => userItem.item, {
nullable: true,
cascade: true,
})
userItems: UserItem[];
...
@Entity()
export class User{
@PrimaryGeneratedColumn('uuid')
id: string; // or whatever you like
@OneToMany(() => UserItems, userItem => userItem.user, {
nullable: true,
cascade: true,
})
userItems: UserItem[];
...
您的映射 class 如下:
@Entity()
export class UserItem{
@PrimaryGeneratedColumn('uuid')
id: string; // or whatever you like
@ManyToOne(() => User, {
onDelete: 'CASCADE', // decide on delete logic
})
user: User;
@ManyToOne(() => Item, {
onDelete: 'CASCADE', // decide on delete logic
})
item: Item;
...