특급 메소드 res.json (items_json)을 사용하여 items_json이라는 JSON 객체를 반환 할 때 문제가 발생했습니다. 익스프레스 메소드 res.json (items_json)이 아래 코드의 POSITION # 1에서 호출되면 함수가 완벽하게 작동합니다. 그러나, res.json (items_json가) 대신 # 1의 위치 # 2에서 호출, 반환 된 JSON 객체는 비어 :익명 함수 내에서 JSON 객체에 데이터가 추가되지 않습니다.
{
"example_key_object": []
}
내가 POSITION # 2 그래서에서 res.json (items_json)를 갖고 싶어 루프를 추가 할 수 있습니다. POSITION # 2에서는 JSON 응답이 비어 있지만 POSITION # 1에서는 정상적으로 작동하는 이유는 무엇입니까?
app.get('/example_apiurl', function(req, res) {
var items_json = {}
var key_object = 'example_key_object';
items_json[example_key_object] = [];
var item_str;
var data;
var url = "example.com";
request(url, function(error, response, html){
if(!error){
var $ = cheerio.load(html);
/*
some irreverent logic to get var items_clean_st
*/
item_str = items_clean_st.substring(x,y);
data = {
locationID: 2,
item: item_str
};
items_json[key_object].push(data);
res.json(items_json) //POSITION #1 //returns correctly!
}
})
res.json(items_json) //POSITION #2 //empty :(
}
})