cursor.toArray(callback)不返回文档数组

 谢文友649 发布于 2023-02-09 09:21

我想返回一个包含甲板集合文档的数组.我可以让光标指向那些文档,然后我使用toArray()函数将它们转换为数组.

问题是我无法返回已转换的数组...请查看我的代码.

exports.find_by_category = function (category_id){
    var results = []; //Array where all my results will be
    console.log('Retrieving decks of category: ' + category_id);
    mongo.database.collection('decks', function(err, collection) {
        collection.find({'category_id': category_id}).toArray(function(err,items){
            results = items; //Items is an array of the documents
        });
    }); 
    return results; //The problems is here, results seems to be empty...
};

老实说,我不知道results在外围范围内发生了什么.我究竟做错了什么?如何results以找到的文档数组的形式返回.

1 个回答
  • 正如@Pointy所指出的那样,该行return results是在调用之前同步执行的,collection.find它返回了任何结果.

    解决这个问题的方法是提供函数的回调,如下所示:

    exports.find_by_category = function (category_id, callback){ //Notice second param here  
        mongo.database.collection('decks', function(err, collection) {
           collection.find({'category_id': category_id}).toArray(function(err,items){
               if(err) callback(err);
               else callback(null, items);
            });
        }); 
    };
    

    为了更好地理解回调的工作原理,请查看此答案.是的,异步编程起初很难,并且确实需要一些人习惯.

    2023-02-09 09:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有