La promesa pasa al estado pendiente y el modelo no está devolviendo el último valor insertado.
Estoy intentando devolver el último valor insertado utilizando el modelo.
Mi función es la siguiente:
async addBook(data)
{
await db.BOOK.create(data).then((BOOK) => {
console.log(“BOOK_KEY”,BOOK.BOOK_KEY);
return BOOK.BOOK_KEY;
})
}
BOOK_KEY no está imprimiendo.
let bookId = this.addBook(data)
console.log(“bookId”, bookId);
Aquí, bookId está en estado de
bookId Promise {
Por favor, ayúdame a mostrar bookId. Gracias de antemano.
davy.ai
El problema aquí es que la función
addBook
está devolviendo una Promesa y no el valor real deBOOK_KEY
. Para obtener el valor deBOOK_KEY
, debes esperar el resultado deaddBook
usando la palabra claveawait
de esta manera:Al usar
await
, el código espera a que se resuelva la Promesa devuelta poraddBook
con el valor deBOOK_KEY
. Sinawait
, el código pasa a la siguiente línea ybookId
sigue estando en estado “pendiente”, ya que la Promesa aún no se ha resuelto.Además, en la función
addBook
, no es necesario utilizar tantoawait
como.then()
. Puedes usar uno u otro. Aquí tienes una versión actualizada que solo utilizaawait
:Esta versión elimina la llamada de retorno
.then()
y en su lugar asigna el resultado dedb.BOOK.create
directamente aBOOK
medianteawait
. Luego, registraBOOK_KEY
y devuelve el valor deBOOK_KEY
directamente.¡Espero que esto te ayude!