node.js 函数应该仅在 mongodb 查询完成后返回

标签 node.js mongodb

我正在尝试获取从执行 mongodb 查询的函数返回的值。 我的问题是该函数不返回任何内容,因为查询在返回之前尚未完成。

如果我尝试 console.log(checkChickenValue(2));例如我得到未定义的返回。相关函数如下:

function checkChickenValue(chickenid) {
    MongoClient.connect(url, function(err, db) {

        var cursor = db.collection('games').find({}, {
            limit : 1,
            fields : {
                _id : 1
            },
            sort : {
                _id : -1
            }
        }).toArray(function(err, docs) {
            var id = docs[0]._id;
            var test = db.collection('games').findOne({
                _id : id
            }, function(err, result) {
                switch(chickenid) {
                case 1:
                    complete(result.chicken1.value);
                    break;
                case 2:
                    complete(result.chicken2.value);
                    break;
                case 3:
                    complete(result.chicken3.value);
                    break;
                case 4:
                    complete(result.chicken4.value);
                    break;
                case 5:
                    complete(result.chicken5.value);
                    break;
                case 6:
                    complete(result.chicken6.value);
                    break;
                case 7:
                    complete(result.chicken7.value);
                    break;
                case 8:
                    complete(result.chicken8.value);
                    break;
                }

            });

        });
    });
    function complete (value)
    {
        return value;
    }
};

如何让函数等待,直到调用complete()?

预先感谢您的帮助!

最佳答案

您需要通过回调返回结果。向您的函数添加一个“回调”参数,表示结果准备好时将调用的函数。

function checkChickenValue(chickenid, callback)
{

然后,当您获得结果时,通过回调返回它:

switch(chickenid) {
    case 1:
        callback(complete(result.chicken1.value));

然后,要使用您的函数,请执行以下操作:

checkChickenValue(2, function(result){ console.log(result); });

关于node.js 函数应该仅在 mongodb 查询完成后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931190/

相关文章:

javascript - 无法安装js-bson

MongoDB:将文档对象分配给 '$project'阶段的字段

ios - 仅为非高级用户禁用 Realm 同步

javascript - MongoDb 从字符串运行命令

javascript - findOneAndUpdate 不是函数

javascript - MongoDB查找包含括号的字符串

javascript - 将模型作为函数导入, Sequelize 装置不从 json 文件 : Unhandled rejection Error return? 导入数据

javascript - Mongoose 排序不适用于 find()

javascript - 在 Node.js 中,相当于 Python 的 pip freeze 的是什么

node.js - 在 MongoDB 聚合中添加缺失的日期