MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Node.js обещава с mongoskin

Можете да обещаете целия модул така с 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);

Това трябва да се направи само на едно място за един път във вашето приложение, а не навсякъде в кода на приложението.

След това просто използвате методи нормално, с изключение на суфикса Async и не предавате обратни извиквания:

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

Така че отново, ако извикате функция като

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

Версията, връщаща обещание, се нарича така:

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

(Неуловените грешки се регистрират автоматично, така че не е необходимо да ги проверявате, ако само ще регистрирате)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да използвам оператор LIKE на mongoose?

  2. Неуспешно удостоверяване на Python Pymongo

  3. MongoDB не използва моя индекс

  4. Как мога да разбера къде mongoDB съхранява данни? (не е в /data/db!)

  5. Актуализиране на вложени масиви в mongoDB чрез mongo shell