Estoy usando Typeorm (v8.0.2) y Nestjs (v8) con Nodejs (v16). Mi problema es cuando creo un libro Typeorm no devuelve la identificación del libro generado
Aquí está Book.entity
@Entity() export class Book { @PrimaryGeneratedColumn('increment') id: number; @Column() title: string; @Column() author: string; }Y esto es book.service
async createBook(createBookDto: CreateBookDto): Promise<Book> { const book = await this.bookRepository.create(createBookDto) await this.bookRepository.save(createBookDto) return book }y cuando uso cartero y creo un libro, simplemente regresa
{ title: "example" author: "foo" }falta la identificación del libro generado
TL;DR : devuelve el resultado de this.bookRepository.save(createBookDto) , no this.bookRepository.create(createBookDto)
De los documentos :
create : crea una nueva instancia de User . Opcionalmente, acepta un objeto literal con propiedades de usuario que se escribirán en el objeto de usuario recién creado.
const user = repository.create(); // same as const user = new User(); const user = repository.create({ id: 1, firstName: "Timber", lastName: "Saw" }); // same as const user = new User(); user.firstName = "Timber"; user.lastName = "Saw"; En su ejemplo, está utilizando el decorador @PrimaryGeneratedColumn() que utiliza la función de incremento automático a nivel de base de datos. El valor de esta columna se generará después del método save() , no después de create() .