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

Bagaimana cara mengatasi masalah asinkron MongoDB/Node ini?

Beberapa bahasa menyediakan konstruksi bahasa khusus untuk mengatasi masalah ini. Misalnya, C# memiliki async /await kata kunci yang memungkinkan Anda menulis kode seolah-olah Anda memanggil API sinkron.

JavaScript tidak dan Anda harus membuat rantai createAccount panggilan dengan panggilan balik.

Beberapa orang telah mengembangkan perpustakaan yang dapat membantu Anda mengatur kode ini. Misalnya async , langkah , node-promise dan T

Anda juga dapat menggunakan serat library, library native yang memperluas runtime JavaScript dengan fiber / coroutine.

Dan beberapa orang telah memperluas bahasa dengan konstruksi yang mirip dengan async /await :streamline.js , IcedCoffeeScript atau wind.js . Misalnya, streamline.js (saya penulisnya jadi saya jelas bias) menggunakan _ sebagai placeholder panggilan balik khusus dan memungkinkan Anda menulis contoh sebagai:

var db = MongoClient.connect("mongodb://localhost:27017/bq", _):
var accounts = db.createCollection('accounts', _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);

function createAccount(email, password, _) {
    var item = accounts.findOne({"email":email}, _);
    if (item === null) {
        accounts.insert({"email":email, "password":password}, _);
        console.log("Account " + email + " created."); }
    } else {
        console.log("Account already exists.")
    }
}

Dan, yang tak kalah pentingnya, fitur bahasa baru seperti generator dan fungsi yang ditangguhkan sedang dibahas untuk versi JavaScript mendatang (generator kemungkinan besar akan mendarat di ES6, fungsi yang ditangguhkan tampaknya agak terhenti).

Jadi Anda memiliki banyak pilihan:

  • tetap pada panggilan balik
  • gunakan pustaka pembantu
  • gunakan ekstensi waktu proses fiber
  • gunakan ekstensi bahasa
  • tunggu ES6


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah Mongodb ObjectID unik di antara dokumen?

  2. Bagaimana cara memanggil mongodb di dalam fungsi peta/pengurangan saya? Apakah itu praktik yang baik?

  3. MongoDB hapusSatu()

  4. Agregasi Kelompok Usia Mongo

  5. Fungsi agregat menduplikasi item dalam ng-repeat pada penyegaran halaman. Perlu mencari cara untuk menghentikan duplikasi. Angularjs Mongodb luwak