MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Node.js berjanji dengan mongoskin

Anda dapat menjanjikan seluruh modul seperti itu dengan 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);

Ini hanya perlu dilakukan di satu tempat untuk satu kali di aplikasi Anda, bukan di mana pun di kode aplikasi Anda.

Setelah itu anda tinggal menggunakan metode seperti biasa kecuali dengan akhiran Async dan tidak melewatkan callback :

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

Jadi sekali lagi, jika Anda memanggil fungsi seperti

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

Versi yang mengembalikan janji disebut seperti:

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

(Kesalahan yang tidak tertangkap dicatat secara otomatis sehingga Anda tidak perlu memeriksanya jika Anda hanya akan mencatatnya)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB 'tidak dapat menemukan indeks untuk kueri $geoNear'

  2. Meteor.Collection.ObjectID() vs MongoDB ObjectId()

  3. ng-jika dipanggil lebih dari yang seharusnya

  4. Mongodb/Mongoid - apa artinya {:multi => true}

  5. kelompokkan berdasarkan hari/bulan dan ambil rata-rata peringkat pada hari/bulan itu di mongo