Connecter de manière synchrone à mongodb

Je tiens à vous connecter à mongodb d'abord, puis exécutez tout le reste dans mon application.

De le faire, je dois écrire quelque chose comme:

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

Cela rend mon appli pour être complètement en retrait à l'intérieur de l' .fonction de connexion... Qui semble laid et prend de la place pendant que je travaille sur mon projet.

Je pense que la meilleure solution serait d'avoir la connexion MongoDB synchrone (même parce que sans la connexion aux bases de mon application ne peut pas travailler, donc pourquoi devrais-je faire quelque chose alors que c'est la connexion?) et puis exécutez le reste de mon code.

Comment puis-je faire?

  • C'est de cette façon node.js des œuvres. Tout est asynchrone et de rappel-monté. Vous ne pouvez pas changer cela, mais je me souviens avoir lu à propos de certaines libs qui contribuerait à la réduction de spaghetti-ness du code. Malheureusement, je ne me souviens pas des noms.
  • "la meilleure solution serait d'avoir la connexion MongoDB synchrone" - vous pouvez utiliser ruby, par exemple.
  • Oui, votre application est enveloppé à l'intérieur du .connect() méthode, mais de l'exportation de la logique dans un autre fichier (ce qui est une bonne idée) et je ne peux pas voir quelque chose de laid ici.
  • Vous pourriez vouloir regarder dans koa, ce qui rend le code beaucoup plus propre ( au détriment de l'utilisation lourde de l'ES6 générateur de fonctions ).
  • Vous pouvez utiliser mongoose, il a de l'OMI, une grande fonctionnalité que si vous essayez d'enregistrer quelque chose, il attend jusqu'à ce que la connexion est établie et puis, derrière les coulisses, enregistre les données!
InformationsquelleAutor Fez Vrasta | 2014-09-18