1

これは私が見逃している小さなものになることはわかっていますが、助けていただければ幸いです。

ここに私のテストスクリプト(node.js)があります


var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/myTestDB',
    function (err, db) {
        if (err)
            debugger;
        else {            
            db.collection('test', function (err, collection) {

                collection.save({ name: "danny" }, function () { debugger;});

                collection.find(function (err, results) {
                    if(results.items.length == 0){
                       ///======> always = 0 !!!! WHY?!!!!
                        debugger;
                    }
                });
            });

        }
        db.close();
    });

「当たり前!」で答えを始めてください。

4

1 に答える 1

2

UPDATE : また、呼び出しをコールバックdb.close();内に移動するfindか、接続を終了する前に接続を閉じる必要があります。

あなたの例でresultsは、ドキュメントの配列ではなくカーソルであるため、それを呼び出しtoArrayてカーソルを反復処理し、ドキュメントの配列を取得する必要があります。findただし、コールバック内にコールを配置する必要もありsaveます。そうでない場合、が完了findする前に が実行されてsaveいます。

代わりに次のようなものです。

collection.save({ name: "danny" }, function () {
    collection.find().toArray(function (err, results) {
        // results contains the array of docs

        // Now you can close the connection.
        db.close();
    });
});
于 2013-10-04T16:38:53.870 に答える