Actualmente estoy trabajando en un backend de nodo y me gustaría almacenar datos de forma asíncrona desde una base de datos SQL. En el primer paso almaceno los datos de la base de datos en una matriz y en el segundo paso quiero mostrar la matriz en la consola. El problema es que la matriz está vacía cada vez que la envío fuera de la función fetchProducts. Cuando saco la matriz dentro de la función, las entradas son correctas.
¿Cómo puedo hacer que la función sea asíncrona para que la salida de la consola solo se realice después de que se hayan guardado todas las entradas en la matriz?
let products = []; async function fetchProducts () { db.get(`SELECT * FROM products ORDER BY id DESC LIMIT 0, 1`,(err, row) => { let maxId = row.id; for(let i=1; i<=maxId; i++){ db.get(`SELECT * FROM products where id = '${i}'`,(err, row)=>{ let product = { id: row.id, name: row.name, describtion: row.describtion, price: row.price }; products.push(product); }); } }) } async function start (){ await fetchProducts() console.log(products); } start();