, Recientemente comencé a programar en NodeJS, por lo que soy un principiante. Estoy usando Sequelize . Cuando llamo a la función sequelize.sync() , crea las tablas (que definí) en mi base de datos. De todos modos, si realizo una consulta inmediatamente después de la función sequelize.sync() , obtengo un error. Creo que el problema es que la consulta se ejecuta antes del final de sequelize.sync() , por lo que tendría que esperar al final de la ejecución de sequelize.sync() . El código es simplemente este:
sequelize.sync({force: true}); Users.create({name: "A", surname: "B", number: 1});el error es:
(node:2561) UnhandledPromiseRejectionWarning: Error at Query.run (/mnt/c/Users/raffa/Desktop/simple_app/node_modules/sequelize/lib/dialects/postgres/query.js:50:25) at retry (/mnt/c/Users/raffa/Desktop/simple_app/node_modules/sequelize/lib/sequelize.js:313:28) at process._tickCallback (internal/process/next_tick.js:68:7) (node:2561) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)¿Como puedó resolver esté problema? ¡Gracias!
Para esperar una función asíncrona que devuelve una Promesa, como sequelize.sync(), simplemente agregue la palabra clave await .
await sequelize.sync({force: true}); Users.create({name: "A", surname: "B", number: 1}); No olvides esperar a Users.create también si quieres hacer algo después. En general, es una buena práctica esperar siempre a las funciones asincrónicas.
Nota: La espera de nivel superior solo está disponible con ESModules. De lo contrario, debe envolver todo el código en un IIFE asíncrono