2016-10-03 81 views
0

我正在構建一個messenger bot,每天查詢一次API並將包含的信息發送給用戶。其託管在Heroku上,並使用Node.js的使用Node.JS和Heroku刷新api查詢

我目前使用這個查詢API:

var request = require('request'); 
//url for classes JSON 
var url = 'https://example.api'; 

//get JSON, parse it and store it in jsonstorage variable 
request(url, (error, response, body)=> { 
    if (!error && response.statusCode === 200) { 
    jsonstorage = JSON.parse(body) 
    console.log("Got a response") 
} else { 
    console.log("Got an error: ", error, ", status code: ", response.statusCode) 
} 
}) 

這裏的問題是,它不會刷新API查詢過,因此它們的值返回的總是一樣的。如果我嘗試將它放入每天發送一次數據的函數中,它聲明jsonstorage變量是'undefined'。

如何定期刷新查詢?

謝謝!

+0

那是你所有的代碼嗎?看起來你的'jsonstorage'變量是在請求函數的範圍內定義的,因此它將不可用於外部函數。 –

+0

另外,如果您要保存數據,則可能需要將其存儲在數據庫中,而不是存儲在代碼中的變量中。 –

+0

還有更多,但jsonstorage變量可以在另一個函數中訪問,即使它包含在函數的範圍內。當我在函數內遷移它時,我嘗試將它取出,但仍然會引發錯誤。從這裏的第二個答案得到這個[鏈接](http://stackoverflow.com/questions/11826384/calling-a-json-api-with-node-js)。此外,我不希望變量持續存在 - 只是爲了能夠在函數內多次調用它@LucasLazaro –

回答

0

我自己找到了答案 - 我遇到的問題是請求是異步的,所以我需要等待請求才能在運行腳本的其餘部分之前接收結果。