【问题标题】:How do I query in Mongo?如何在 Mongo 中查询?
【发布时间】:2015-11-05 05:23:16
【问题描述】:

我在试图成功查询 Mongo 时碰壁。

这段代码:

    async.waterfall([
        function(callback){
            cursor = db.collection(collection).findOne(query)
            callback(null);
        },
        function(callback){
            console.log("Result is:" + cursor);
            console.log(JSON.stringify(cursor));
            callback(null);
        }
    ]);

产生以下输出:

result is:[object Object]
{}

为什么?它应该在集合中找到一个文档。

作为后续问题,我如何才能看到什么

[object Object] 

是吗?

【问题讨论】:

  • 尝试"Result is:", cursor 而不是连接以正确记录。您应该将查询结果传递给回调而不是游标。即在对.findOne 的回调中使用callback。这是本机 MongoDB 驱动程序吗?什么版本?
  • 我使用的是 Mongo v 3.0。请你能用不同的话解释/说这个:“你应该将查询的结果传递给回调而不是光标。即在回调中使用回调到.findOne”。谢谢! (除此之外:“结果是:”,光标更改只打印 {}。)

标签: node.js mongodb


【解决方案1】:

基本上你应该等待你的查询完成,然后调用回调并期待任何结果:

        async.waterfall([
            function(callback){
                db.collection(collection).findOne(query, function(err, result) {
                  callback(err, result); // if there is no err, it will be null
                });
                // the above can be simplified to just                                    
                // db.collection(collection).findOne(query, callback);
                // since findOne callback and current function callback have the same arguments
            },
            function(result, callback) {
                // use comma here to automatically doing JSON.stringiry(result)
                console.log("Result is:", result);
                callback();
            }
        ], function(err) {
           // here is your final callback where you know that async.waterfall 
           // is finished (with or without error)
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多