Estoy tratando de guardar un documento en la colección mongodb y quiero esperar a que termine antes de que JavaScript ejecute la siguiente instrucción, pero la espera no está esperando.
const properties = ["name", "description", "type", "permission", "color"]; const addEvent = async (eventInfo, api_call = true) => { let response = { success: true }; for (let prop of properties) { if (prop !== "permission" && !eventInfo.hasOwnProperty(prop)) { response.success = false; response.message = prop + " field is not given."; break; } } if (response.success) { let event = new Event(eventInfo); await event.save((err) => { if (err) { response.success = false; response.message = err.message; console.log(response); } else { response.success = true; response.message = "Event Added."; } }); console.log(response); } if (api_call) { return new Promise((resolve, reject) => { response.success ? resolve(response) : reject(response); }); } };No es ideal usar una devolución de llamada con async-await . Reestructuraría el código de la siguiente manera:
let event = new Event(eventInfo); try { await event.save(); response.success = true; response.message = "Event Added."; } catch (err) { response.success = false; response.message = err.message; } console.log(response);Debe usar devoluciones de llamada para promesas o usar async-await pero no ambos.