Это мой вывод из рассмотрения:
Опция cascade
не влияет на ограничения столбцов базы данных, и я считаю, что используется TypeORM только при оценке того, как сохранитьотношение сущностей к базе данных.Мы можем определить объекты следующим образом:
@Entity()
class Book extends BaseEntity {
@ManyToOne(() => Author, (author) => author.books, {
onDelete: 'CASCADE',
})
public author?: Author
}
@Entity()
class Author extends BaseEntity {
@OneToMany(() => Book, (book) => book.author, {
cascade: true,
})
public books: Book[];
}
onDelete
устанавливает для внешнего ключа authorId
значение CASCADE onDelete для Book
.Это означает, что при удалении автора книга также удаляется.
Установка cascade: true
на Author
сообщает TypeORM, что если к автору добавляется новая книга и автор сохраняется, новая книгатакже должны быть сохранены в базе данных.Например:
const author = await Author.findOne({ id: '123' });
author.books.push(new Book(...));
await author.save();
Если каскад не установлен на Book
, новая книга не будет сохранена в базе данных.