Вы пытаетесь получить доступ к документам за пределами его области видимости, которая находится между {
и }
.Таким образом, вы не можете получить к нему доступ ниже .then(() => {})
.
К счастью, вы предоставляете функцию обратного вызова done(err, radar_life_cycle_data)
, которую вы можете использовать в любом месте области действия get_radar_life_cycle(documents, done)
.Даже рамки внутри его сферы.Когда вы вызываете функцию done, то, что вы в основном делаете, это вызываете эту функцию (ну, у нее есть некоторые синтаксические ошибки, поэтому я ее очистил)
function(err,radar_life_cycle_data) {
if (err) {
res.json(err);
console.log(radar_life_cycle_data)
}
}//end for radar_life_cycle_data
, которая затем выполняется
Итак, решение:
Переместите готово в область действия .then(() => {})
следующим образом:
let get_radar_life_cycle = function(data,done) {
console.log("data after get_radar_life_cycle")
console.log(data)
Radar_life_cycle.find({orgRadar: {$in:data}})
.then(documents => {
console.log(documents) // --> shows correct data
done(null,documents) // --> No error coming from this line
});
};
То же самое относится к data
, что не входит в область действияиз get_cloned_radars
app.get("/api/radar_cloning", (req, res, next) => {
Radar_cloning.find({orgRadar: {$in:req.query.params.split(',')}})
.then(documents => {
get_cloned_radars(documents, function(err,data) {
if (err) {
res.json(err);
if (data!=null) {
console.log(data)
get_radar_life_cycle(data, function(err,radar_life_cycle_data) {
if (err) {
res.json(err);
console.log(radar_life_cycle_data)
} //end of (Err)
}); //end of get_radar_life_cycle
} //end for data
} //end of (Err)
}); //get_cloned_radars
});
Но так как ваш код не читается, вот очищенная версия:
app.get("/api/radar_cloning", (req, res, next) => {
const radar_life_cycle_cb = function (err, data) {
if (err) {
res.json(err);
return;
}
console.log(data);
}
const cloned_radar_cb = function (err, data) {
if (err) {
res.json(err);
return;
}
if (data != null) {
get_radar_life_cycle(data, radar_life_cycle_cb);
}
};
Radar_cloning.find({orgRadar: {$in:req.query.params.split(',')}})
.then(documents => get_cloned_radars(documents, cloned_radar_cb));
}