MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Node.js obiecuje z mongoskin

Możesz obiecać cały moduł w ten sposób z 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);

Wystarczy to zrobić tylko raz w jednym miejscu w aplikacji, a nie w dowolnym miejscu w kodzie aplikacji.

Następnie po prostu używasz metod normalnie, z wyjątkiem przyrostka Async i nie przekazujesz wywołań zwrotnych:

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

Więc znowu, jeśli wywołasz funkcję taką jak

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

Wersja zwracająca obietnicę nosi nazwę:

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

(Niewykryte błędy są automatycznie rejestrowane, więc nie musisz ich sprawdzać, jeśli zamierzasz je tylko rejestrować)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie można uruchomić MongoDB. BŁĄD:adres jest już używany

  2. Sterownik Mongodb C# zwraca tylko pasujące dokumenty podrzędne w tablicy

  3. Jak wyświetlić szczegóły pymongo.errors.OperationFailure?

  4. Mongoose findOneAndUpdate Aktualizacja wielu pól

  5. Model.find().toArray() twierdzący, że nie ma metody .toArray()