MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Node.js promet avec mongoskin

Vous pouvez promettre l'ensemble du module comme ceci avec bluebird :

var Promise = require("bluebird");
var mongoskin = require("mongoskin");
Object.keys(mongoskin).forEach(function(key) {
  var value = mongoskin[key];
  if (typeof value === "function") {
    Promise.promisifyAll(value);
    Promise.promisifyAll(value.prototype);
  }
});
Promise.promisifyAll(mongoskin);

Cela ne doit être fait qu'à un seul endroit pour une seule fois dans votre application, pas n'importe où dans votre code d'application.

Après cela, vous utilisez simplement les méthodes normalement, sauf avec le suffixe Async et ne passez pas de rappel :

req.db.collection('users').find().toArrayAsync()
  .then(function(doc) {
    if (doc) {
      return req.db.collection('users').find().toArrayAsync();
    }
  })
  .then(function(doc) {
    if (doc) {
      return req.db.collection('users').find().toArrayAsync();
    }
  })
  .then(function(doc) {
    if (doc) {
      return req.db.collection('users').find().toArrayAsync();
    }
  });

Encore une fois, si vous appelez une fonction comme

foo(a, b, c, function(err, result) {
    if (err) return console.log(err);
    //Code
});

La version de retour de promesse s'appelle :

fooAsync(a, b, c).then(...)

(Les erreurs non détectées sont automatiquement enregistrées, vous n'avez donc pas besoin de les vérifier si vous ne faites que les enregistrer)