MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Node.js verspricht mit Mongoskin

Sie können das gesamte Modul wie folgt mit bluebird versprechen:

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

Dies muss nur einmal an einer Stelle in Ihrer Anwendung durchgeführt werden, nicht irgendwo in Ihrem Anwendungscode.

Danach verwenden Sie Methoden nur normal außer mit dem Async-Suffix und geben keine Callbacks weiter:

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

Also noch einmal, wenn Sie eine Funktion wie

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

Die Promise-Returning-Version heißt wie folgt:

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

(Nicht erfasste Fehler werden automatisch protokolliert, sodass Sie sie nicht suchen müssen, wenn Sie sie nur protokollieren möchten)