2017-01-15 16 views
0

私はHow to use MongoDB with promises in Node.js?を読んでいました。最初の答えで、私がコールバックを通らなければ、mongoドライバが私に約束を返すと言いました。私が試したときには、「接続」のために働いたが、それはうまくいきませんでした:NodeJS mongodbドライババージョン2.2で約束を使用する方法

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

私が得た:

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

私はhttp://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#findfind()のドキュメントを読むことを試みたと私はそこにいくつかの例を見ることができますそれは、このようなことはない:

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

     db.close(); 
    }); 

これは、検索のための約束ですが、それはこのexplain()事があります。それは何ですか?また、なぜこのAPIに約束の言及がないのですか?また、別の行があります:

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

これも約束です。

したがって、find()で約束をどのように使うのですか?

また、このドキュメントで何かの戻り値が示されないのはなぜですか?あなたが望むように動作します私が使用できる引数...あなたが探しているものを

+0

この[チュートリアル](http://zshawnsyed.com/2015/05/04/mongo-db-promise/)をチェックしてください! –

+0

そのチュートリアルは、別のライブラリであるmongooseのためのものです。 – agm1984

答えて

2

toArray()あり、どちらも(コールバックされていない場合の内部コールバック、または約束は返さ)

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

db.collection('..').find()はA返すためですカーソル、約束ではありません。

この動作は、「全体として検出」が使用できる唯一のパターンではない(つまり、ストリームが許可されている)ためである。

関連する問題