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

Как да заобиколите този асинхронен проблем на MongoDB/Node?

Някои езици предоставят специална езикова конструкция за справяне с този проблем. Например C# има async /await ключови думи, които ви позволяват да пишете кода, сякаш извиквате синхронни API.

JavaScript не го прави и трябва да свържете createAccount обаждания с обратни повиквания.

Някои хора са разработили библиотеки, които могат да ви помогнат да организирате този код. Например async , стъпка , node-promise и Q

Можете също да използвате влакна библиотека, собствена библиотека, която разширява времето за изпълнение на JavaScript с влакна / съпрограми.

И някои хора са разширили езика с конструкции, които са подобни на async /await :streamline.js , IcedCoffeeScript или wind.js . Например streamline.js (аз съм авторът, така че очевидно съм предубеден) използва _ като специален контейнер за обратно извикване и ви позволява да напишете своя пример като:

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.")
    }
}

И не на последно място, нови езикови функции като генератори и отложени функции се обсъждат за бъдещи версии на JavaScript (генераторите е много вероятно да кацнат в ES6, отложените функции изглежда са малко в застой).

Така че имате много възможности:

  • придържайте се към обратните повиквания
  • използване на помощна библиотека
  • използвайте разширението за изпълнение на fibre
  • използвайте езиково разширение
  • изчакайте ES6


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо многостойностното поле е лоша идея в релационните бази данни

  2. Проверете дали MongoDB upsert направи вмъкване или актуализация

  3. Получаване на резултат $group с брой групи

  4. Грешка при одит на mongodb при зареждане на Spring

  5. mongodb лошо представяне