Verbinde synchron mit Mongodb

Ich würde gerne eine Verbindung zu mongodb zuerst, dann führen Sie alles andere in meiner Anwendung.

Es zu tun, ich habe das schreiben so etwas wie:

MongoClient.connect("mongodb://localhost/test", function(err, connection) {
    if (err) { console.error(err); }
    db = connection;

    var app = express();

    //Include API V1
    require("./apiv1.js")(app, db);

    app.listen(3000, function(err) {
        if (err) { console.error(err); } else { console.log("Started on *:3000"); }
    });
});

Das macht meine app komplett eingerückt innerhalb der .connect-Funktion... Die sieht hässlich und nimmt Platz, während ich an meinem Projekt arbeiten.

Ich denke, die beste Lösung wäre die MongoDB-Verbindung synchron (auch, weil ohne die DB-Verbindung, die app kann nicht arbeiten, also warum sollte ich etwas tun, während es eine Verbindung?) und dann den rest von meinem code.

Wie kann ich tun?

Kommentar zu dem Problem
Dies ist, wie node.js funktioniert. Ist alles async und callback-geritten. Sie kann das nicht ändern, aber ich erinnere mich, Lesen über einige libs, die helfen würden mit der Verringerung der spaghetti-ness der code. Leider kann ich mich nicht erinnern die Namen. Kommentarautor: Sergio Tulentsev
"die beste Lösung wäre die MongoDB-Verbindung synchron" - Sie verwenden könnte, ruby, zum Beispiel. Kommentarautor: Sergio Tulentsev
Ja, die app ist verpackt in der .connect() - Methode, aber Sie exportieren, um die Logik in eine andere Datei (das ist eine gute Idee), und ich kann nicht sehen, nichts hässlich hier. Kommentarautor: micnic
Möchten Sie vielleicht einen Blick in die koa, der code macht sehen viel sauberer ( auf Kosten der starken Nutzung von ES6-generator-Funktionen ). Kommentarautor: Markus W Mahlberg
Sie können mit Mungo, hat es IMO ein tolles feature, dass, wenn Sie versuchen, etwas retten, wartet er, bis die Verbindung hergestellt ist und dann, hinter den kulissen, speichert die Daten! Kommentarautor: Simo

InformationsquelleAutor der Frage Fez Vrasta | 2014-09-18

Schreibe einen Kommentar