MongoDB发现返回零结果

时间:2013-10-04 16:25:06

标签: node.js mongodb

我知道这将是一些我不知道的小事,但我会很感激帮助。

这是我的测试脚本(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!”开始你的答案。

1 个答案:

答案 0 :(得分: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();
    });
});