如何构建我的JavaScript代码以使其正确执行?

时间:2017-10-03 01:21:51

标签: javascript mongodb express asynchronous callback

我正在编写一些执行以下操作的JS代码:它将查询Mongo DB以获得一些结果。假设有一组文件返回,它将搜索对象集合的最新日期,计算一些丢失的日期,然后将它们插入(实际的计算方法工作正常)。

出于某种原因,我收到一个错误,当我尝试访问week对象的start属性时,它会返回undefined。好像我不明白如何正确构建我的代码。我希望/希望的是,一旦结果从findMostRecentDate返回,else条件中的代码就会被执行,但看起来代码在结果返回之前就被执行了。我粘贴了从控制台返回的小错误。

有人可以就如何重构我的代码给我一些帮助吗?

我已将我的任务分解为以下几个功能:

根据传递的参数查找最近的日期。当我在它上面运行它时,这很好用:

// Finds the most most recent date of the collection
function findMostRecentDate(contract_id, case_id, callback){ 
    db.collection(getCollectionName(contract_id, config.collectionName))
        .find({"by": case_id}).sort({week: -1}).toArray(function(err, result) {
        if (err) {
            return callback(err);
        }
        return callback(null, result);
    });
}

以下方法将调用上面列出的方法:

function getDates(datesColl, length, contract_id, case_id){       
    var start;
    var arr = [];

    if(length > 1) {
        db.findMostRecentDate(contract_id, case_id, function(err, result){
            if(err) {
                console.error(err); //log it with winston logger!
            } else{                    
                start = result;  //<--coming back 'undefined'
                //newRows does some computations. 
                arr = newRows(start.week, case_id);                    

                return arr.concat(datesColl);
            }
        });
    }
    else{ 
        //do some other stuff
        }
}

我收到以下错误:

enter image description here

0 个答案:

没有答案
相关问题