В ответ на вызов HTTP GET
(с собственным модулем http) я пытаюсь JSON.parse()
ответить после отправки события end
.Я точно знаю, что данные, которые я получаю, действительны в формате JSON, но все равно JSON.parse
выдает ошибку.И мои журналы показывают, что JSON.parse
вызывается раньше, чем следует.
res.on("end", () => {
console.log('Req ended message is', body);
try {
var passport = JSON.parse(body);
} catch (e) {
w.info(
"Cannot parse the response from : " +
process.env.mongo_api_host +
" | error : " +
e
);
}
callback(passport);
return;
});
И мой журнал показывает:
info: Getting MongoDB passport for model : CESI
info: Cannot parse the response from : mongo_api | error : SyntaxError: Unexpected end of JSON input
info: Req ended message is *long valid JSON data*
Мы ясно видим в журналах, что ошибка разборапойман и зарегистрирован до "Req ended message is : ... stuff"
.
Чего мне не хватает?
Редактировать 1:
Даже если поместить callback(passport)
в блок try, как предложено в комментарии, он все равно делает это:
res.on("end", () => {
try {
console.log("Req ended message is", body);
var passport = JSON.parse(body);
//TODO What if you get an array ?
if (passport._id) delete passport._id;
callback(passport);
} catch (e) {
w.info(
"Cannot parse the response from : " +
process.env.mongo_api_host +
" | error : " +
e
);
}
return;
});