我正在编写一些执行以下操作的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
}
}
我收到以下错误: