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();
    });

随意以“duh!”开始您的回答。

4

1 回答 1

2

更新:您还需要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 回答