node.js - MongoDB 发现返回零结果

标签 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!”开始你的回答

最佳答案

更新:您还需要在 find 回调中移动 db.close(); 调用,否则您将关闭连接在你完成之前。

在您的示例中,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();
    });
});

关于node.js - MongoDB 发现返回零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19186222/

相关文章:

mysql - 在协会中继承帮助

node.js - 使用 Node 对 MongoDB 的 PATCH 方法

javascript - 串联使用 forEach 和 mongoose 的 findById 时出现问题

javascript - promise 等待不同的结果

javascript - 变量已定义并用作方法参数,但从未使用过值,因此获取 ESLint 未使用的变量

mongodb - 启动 mongodb 并返回终端

node.js - ExpressJS 错误 : Body-Parser Deprecated

node.js - 如何部署使用 Redis 的 Meteor 应用程序?

mongodb - 获取 mongodb 集合中的所有字段名称?

java - 使用 spring-mongodb 清除 mongodb