【发布时间】:2021-10-07 13:36:00
【问题描述】:
图书实体
@ObjectType()
@Entity({ name: 'books' })
export default class Book extends BaseEntity {
@Field()
@PrimaryGeneratedColumn()
id: number;
@Field()
@Column()
title: string;
@Field(() => Author)
@ManyToOne(() => Author, (author) => author.books, {
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'author_id' })
author: Author;
@ManyToMany(() => Category, {
cascade: true,
nullable: true,
})
@JoinTable({
name: 'book_categories',
joinColumn: {
name: 'bookId',
referencedColumnName: 'id',
},
inverseJoinColumn: {
name: 'categoryId',
referencedColumnName: 'id',
},
})
categories: Category[];
@Field(() => [BookCategory])
@OneToMany(() => BookCategory, (bookCategory) => bookCategory.bookId, {
cascade: true,
})
bookCategories: BookCategory[];
}
BookCategory 实体
@ObjectType()
@Entity({ name: 'book_categories' })
export class BookCategory {
@Field()
@Column({ nullable: true })
isActive: boolean;
@Column()
@IsNotEmpty()
@PrimaryColumn()
bookId: number;
@Column()
@IsNotEmpty()
@PrimaryColumn()
categoryId: number;
@Field(() => Book)
@ManyToOne(() => Book, (book) => book.bookCategories, { cascade: true })
book: Book;
@Field(() => Category)
@ManyToOne(() => Category, (category) => category.bookCategories, {
cascade: true,
})
category: Category;
}
类别实体
mport { BookCategory } from '../bookCategory/book-category-entity';
@ObjectType()
@Entity({ name: 'categories' })
export default class Category extends BaseEntity {
@Field()
@PrimaryGeneratedColumn()
id: number;
@Field()
@Column()
title: string;
@ManyToMany(() => Book, (book) => book.categories)
books: Book[];
@Field(() => [BookCategory])
@OneToMany(() => BookCategory, (bookCategory) => bookCategory.category, {
cascade: true,
})
bookCategories: BookCategory[];
}
我用sequelize 已经很久了,现在我正在探索typeorm。我想要做的是用一个有效载荷保存所有这三个实体,就像 sequelize。 例如在续集你可以做这样的事情
await User.create({
username: 'p4dm3',
points: 1000,
profiles: [{
name: 'Queen',
User_Profile: { // <-------------- JOIN TABLE
selfGranted: true // extra join table field
}
}]
}, {
include: Profile
});
使用 typeorm 中的自定义连接表字段保存此类有效负载的最佳方法是什么?
【问题讨论】:
标签: typescript sequelize.js typeorm