我需要有关Mongodb的node.js中的Asynchronus调用的帮助,我需要调用同步方法来进一步处理数据

时间:2017-02-20 14:06:09

标签: node.js

使用回调函数从mongodb调用id

var GetID = function (nameval, callback) {
    console.log(nameval);
    console.log("munesh hello");
    GenerateID.find({ "id_name": nameval }, {
        "id_code": 1,
        "id_value": 1, "_id": 0
    }, function (err, genvalue) {
        if (err) {
            console.log('hello');
        }
        else {
            if (genvalue === null) {
                callback(err, false);
            }
            else {
                callback(err, true);
            }
        }
        console.log(genvalue);
    });
};

并且调用上面的方法所以我们需要
所以我们需要来自GenerateID.GetID的id并做我们自己的工作。

var region_id = GenerateID.GetID(name, function (error, result) {
    if (error) {
        console.log("getting any error");
    } else {
        console.log(region_id);
        if (!result) {
            console.log('data is not coming');

        } else {
            console.log('data is coming');
        }
    }
});             

1 个答案:

答案 0 :(得分:0)

你有很多问题。在第一段代码中,您需要在调用回调时传递实际值。

在第二个中,您需要设置region_id = result。

理想情况下,您可以使用承诺执行此操作,如下所示。

var GetID = function(nameval){
    return new Promise((resolve,reject) => {
        console.log(nameval);
        console.log("munesh hello");

        GenerateId.find({ "id_name" : nameval },{"id_code":1 , "id_value":1, "_id":0},
            function( err , genvalue ) {

                console.log(genvalue);

                if (err) { 
                    console.log('hello');
                    return reject()
                }
                if (genvalue == null) { return resolve(false); }
                return resolve(genValue);
            });
    });
}

var GetIDPromise = GenerateId.GetID(name);

GetIDPromise.then(
        genValue => {
            if ( genValue == false ){
                console.log('data is not coming');

                // handle region id not being available. Perhaps return and show an error               
            }else{
            var region_id = genValue;
            // continue execution and use region id.
            }
        },
        error => {
            console.log("getting any error");
        }
    )