I'm trying to wait for a forEach to finish, and the forEach loop has two nested requests inside. I need to wait untill the forEach finish beacuse I fill an array with the queries results and then, when the forEach is finish, then call another function, but I cannot do it well because sometimes, the array is fully filled, but othertimes the array is incomplete.
Here is my code:
readAllClientsAndInvoices: function(request, response) {
    let clientsInvoices = [];
    DAOClients.readAllClientesById(request.session.id, function (err, clients) {
        if (err) {
            console.log(err);
        } else {
            clients.forEach(function (client, idx, array) {
                DAOClients.readClientDataById(client.id, function (err, data) {
                    if (err) {
                        console.log(err)
                    } else {
                        DAOClients.readAllclientInvoices(data.id, function (err, invoices) {
                            if (err) {
                                console.log(err);
                            } else {
                                let pair = {
                                    clientData: data,
                                    invoicesList: invoices
                                };
                                clientsInvoices.push(pair);
                            }
                        });
                    }
                    if (idx === array.length - 1) {
                        DAOClients.createClientPDFReportWOCommentsV2(clientsInvoices, function (err, res) {
                            if (err) {
                                console.log(err);
                            } else {
                                response.redirect(307, '/client/searchClient');
                            }
                        });
                    }
                });
            });
        }
    });
}
This is how I do it now, but I need to wait untill the array is fully filled with all the clients and its invoices and then call to createclientPDFReportWOCommentsV2 function but I don't know how to do it.
Thanks everyone
 
     
     
    