Senden Sie mit Express mehrere DB-Abfrageergebnisse an eine einzelne Ansicht

Ich habe eine Dashboard-Ansicht (dashboard.jade), in der zwei Bereiche mit unterschiedlichen Informationen angezeigt werden. Alle diese Informationen sollten aus einer Datenbank abgerufen und dann an die Ansicht gesendet werden.

Angenommen, ich habe eine Routendatei (document.js) mit zwei definierten Aktionen:

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

Diese Funktionen würden nur dazu dienen, Daten aus der Datenbank abzurufen.

Jetzt möchte ich diese Daten von meiner dashboard.js-Routendatei unter der exports.index-Funktion an die Dashboard-Ansicht senden, wo ich meine Dashboard-Ansicht rendere.

Das Problem ist, da die DB-Aufrufe asynchron sein werden, hätte ich keinen Zugriff auf die Daten, bevor ich die Ansicht aufrufen könnte.

Ich schätze, ich könnte eine Aktion haben, die einfach alle meine DB-Aufrufe und durch Rückrufe alle Daten auf einmal an die Ansicht liefert, aber das würde meine Datenabrufaktionen nicht wiederverwendbar machen.

Ich bin wirklich verwirrt darüber, wie ich dieses Problem richtig angehen kann. Wahrscheinlich verstehe ich diese asynchrone Sache als falsch. Kann mir jemand Tipps geben, wie man das richtig macht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage