/ / Ako používať sľuby v NodeJS mongodb ovládači verzie 2.2 - javascript, node.js, mongodb, sľub

Ako používať sľubuje v osobný rozvoj mongodb ovládač verzie 2.2 - javascript, node.js, mongodb, sľub

čítal som Ako používať MongoDB so sľubmi v Node.js? keď som videla, že v prvej odpovedi hovoria, že ak nepodrobím žiadnu spätnú väzbu, mongo vodič mi vráti sľub. Pracovalo to na "pripojenie", ale to nefungovalo, keď som sa snažil:

db.collection("myCollection").find().then((docs)=>{console.log(docs)})

Mám:

MongoDB error: TypeError: db.collection(...).find(...).then is not a function

Snažil som sa prečítať dokumentáciu pre find() na http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#find a vidím niekoľko príkladov, ktoré robia takéto veci:

collection.find({}).explain().then(function(docs) {
test.ok(docs != null);

db.close();
});

toto je sľub na nájdenie, ale má to explain() vec. Čo je to? Prečo sa v tejto API neuvádza ani sľuby? Existuje aj ďalší riadok, ktorý robí:

collection.insertMany([{a:1}, {a:2}, {a:3}], {w:1}).then(function(result) {

čo je tiež sľub.

Takže, ako používať sľuby pomocou find ()?

Tiež prečo táto dokumentácia nepovedie návratové hodnoty čokoľvek? Ani argumenty, ktoré môžem použiť ...

odpovede:

2 pre odpoveď č. 1

To, čo hľadáte, je toArray(), ktorý funguje tak, ako chcete (spätné volanie vo vnútri alebo vrátenie sľubu, ak nie spätné volanie)

db.collection("...").find().toArray()
.then(function(docs) {
// =)
});

To je preto, že db.collection("..").find() vráti kurzor, nie sľub.

Toto správanie je určené preto, lebo "nájsť ako celok" nie je jediný model, ktorý sa dá použiť (tj sú povolené toky).