expressメソッドres.json(items_json)を使用してitems_jsonというJSONオブジェクトを返すときに問題が発生しました。エクスプレスメソッドres.json(items_json)がPOSITION#1の下のコードで呼び出されると、関数は完全に機能します。しかし、res.json(items_json)はJSONオブジェクトが返され、代わりに#1の位置#2で呼び出さ空になっているとき:匿名関数内のJSONオブジェクトにデータが追加されない
{
"example_key_object": []
}
私は位置#2にres.json(items_json)を持つようにしたいので、私ループを追加できます。 POSITION#2ではJSON応答が空ののはなぜですか?しかしPOSITION#1ではJSON応答はうまくいかないのですか?
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 :(
}
})