sql >> Databasteknik >  >> NoSQL >> MongoDB

Node.js lovar med mongoskin

Du kan lova hela modulen så med 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);

Detta behöver bara göras på ett ställe en gång i din ansökan, inte någonstans i din ansökningskod.

Efter det använder du bara metoder normalt förutom med suffixet Async och skickar inte återuppringningar:

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

Så igen, om du anropar en funktion som

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

Den löftesreturerande versionen heter som:

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

(Ofångade fel loggas automatiskt så du behöver inte leta efter dem om du bara ska logga det)



  1. hur man använder mapreduce i mongoose/mongodb frågeunderdokument?

  2. connect är inte en funktion vid anslutning till mongodb

  3. Uppdatera inbäddat objekt inuti array inuti array i MongoDB

  4. sql-fråga till mongodb?