Wyślij wiele wyników zapytań DB do jednego widoku za pomocą Express

Mam widok pulpitu nawigacyjnego (dashboard.jade), który wyświetla dwa panele z różnymi informacjami, wszystkie te informacje powinny być pobierane z bazy danych, a następnie wysyłane do widoku.

Powiedzmy, że mam plik trasy (document.js) z dwiema zdefiniowanymi akcjami:

exports.getAllDocuments = function(req, res){
    doc = db.model('documents', docSchema);

    doc.find({}, function(err, documents) {
        if (!err) { 
            // handle success
        }
        else { 
            throw err;
        }
    });
};

exports.getLatestDocumentTags = function(req, res){
    tags = db.model('tags', tagSchema);

    tags.find({}, function(err, docs) {
        if (!err) { 
            // handle success
        }
        else { 
            throw err;
        }
    });
};

Funkcje te służyłyby tylko pobieraniu danych z bazy danych.

Teraz chciałbym wysłać te dane do widoku pulpitu nawigacyjnego z mojego pliku trasy dashboard.js w funkcji exports.index, gdzie renderuję widok pulpitu nawigacyjnego.

Problem polega na tym, że wywołania db będą asynchronizowane i nie będę miał dostępu do danych, zanim będę mógł wywołać widok.

Myślę, że mógłbym wykonać akcję, która po prostu wykonałaby wszystkie moje wywołania db i poprzez wywołania zwrotne dostarczyłaby wszystkie dane jednocześnie do widoku, ale to sprawiłoby, że moje operacje pobierania danych nie nadają się do ponownego użycia.

Naprawdę jestem zdezorientowany, jak poprawnie rozwiązać ten problem, prawdopodobnie źle rozumiem ten asynchroniczny problem. Czy ktoś może mi dać kilka wskazówek, jak to zrobić poprawnie?

questionAnswers(2)

yourAnswerToTheQuestion