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

Jak obejść ten problem asynchroniczny MongoDB/Node?

Niektóre języki zapewniają specjalną konstrukcję językową, która radzi sobie z tym problemem. Na przykład C# ma async /await słowa kluczowe, które pozwalają napisać kod tak, jakbyś wywoływał synchroniczne interfejsy API.

JavaScript nie działa i musisz połączyć createAccount połączenia z oddzwonieniami.

Niektórzy opracowali biblioteki, które mogą pomóc w zorganizowaniu tego kodu. Na przykład async , krok , node-promise i P

Możesz także użyć włókien biblioteka, natywna biblioteka, która rozszerza środowisko wykonawcze JavaScript o włókna / współprogramy.

Niektórzy rozszerzyli język o konstrukcje podobne do async /await :streamline.js , IcedCoffeeScript lub wind.js . Na przykład streamline.js (jestem autorem, więc jestem oczywiście stronniczy) używa _ jako specjalny symbol zastępczy wywołania zwrotnego i pozwala napisać przykład jako:

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

I wreszcie nowe funkcje językowe, takie jak generatory i funkcje odroczone są dyskutowane dla przyszłych wersji JavaScript (generatory najprawdopodobniej wylądują w ES6, odroczone funkcje wydają się nieco utknęły w martwym punkcie).

Masz więc wiele opcji:

  • trzymaj się wywołań zwrotnych
  • użyj biblioteki pomocniczej
  • użyj rozszerzenia runtime fiber
  • użyj rozszerzenia językowego
  • czekaj na ES6


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Konsekwencje użycia $unwind w zagnieżdżonych tablicach?

  2. PHP i Mongo w Vagrant, Nieprzechwycony wyjątek 'MongoException' z komunikatem 'rozmiar dokumentu BSON to x bajtów, max to 0'

  3. Jak znaleźć sumę wartości znajdujących się w zagnieżdżonej tablicy za pomocą agregacji mongodb?

  4. Java, MongoDB:Jak zaktualizować każdy obiekt podczas iteracji ogromnej kolekcji?

  5. Mongodb - Nieprawidłowy znak błędu Mongoimport