Enviar vários resultados da consulta de banco de dados para uma única exibição usando o Express

Eu tenho uma exibição de painel (dashboard.jade) que exibirá dois painéis com informações diferentes, todas essas informações devem ser recuperadas de um banco de dados e, em seguida, enviadas para a exibição.

Digamos que eu tenha um arquivo de rota (document.js) com duas ações definidas:

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;
        }
    });
};

Essas funções serviriam apenas ao uso de recuperar dados do banco de dados.

Agora, gostaria de enviar esses dados para a visualização do painel do meu arquivo de rota do dashboard.js sob a função exports.index em que eu renderizo minha visualização do painel.

O problema é que, como as chamadas do banco de dados serão assíncronas, eu não teria acesso aos dados antes de poder chamar a visualização.

Eu acho que eu poderia ter uma ação que simplesmente fazia todas as minhas chamadas de banco de dados e através de retornos de chamada entregar todos os dados de uma vez para a exibição, mas isso tornaria minhas ações de recuperação de dados não reutilizáveis.

Estou muito confuso sobre como lidar com este problema corretamente, provavelmente eu estou recebendo essa coisa assíncrona tudo errado. Alguém pode me dar algumas dicas sobre como fazer isso corretamente?

questionAnswers(2)

yourAnswerToTheQuestion