Solución:
Esta es mi conclusión de investigarlo:
los cascade
opción no afectan las restricciones de la columna de la base de datos, y creo que TypeORM solo lo usa para evaluar cómo guardar las relaciones entre entidades en la base de datos. Podemos definir entidades como esta:
@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
establece el authorId
clave externa a CASCADE en Eliminar en Book
. Esto significa que cuando se elimina el autor, también se elimina el libro.
Configuración cascade: true
sobre Author
le dice a TypeORM que si se agrega un libro nuevo a un autor y el autor se guarda, el libro nuevo también debe guardarse en la base de datos. Como esto:
const author = await Author.findOne({ id: '123' });
author.books.push(new Book(...));
await author.save();
Si la cascada no está activada Book
, el nuevo libro no se guardará en la base de datos.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)