Wundground から API を介して JSON 形式の気象データを問題なく取得しています。後で使用するために、そのデータを MongoDB に保存しようとしています。実際にデータを取得し、Mongo のコレクションに書き込むことができます。ただし、db.collection.find() を実行すると、JSON 形式ではなく、個々の文字が個別に保存されているように見えます。データを取得して Mongo に保存するコード スニペットを次に示します。
// Define the Wunderground method.
var method = "/api/" + apiKey + "/conditions/q/" + state + "/" + city + ".json";
// Define the HTTP post properties.
var options = {
host: 'api.wunderground.com',
path: method,
method: 'GET',
port: 80
};
// Create the HTTP POST.
var request = http.request(options, function (response) {
var str = '';
// Create the listener for data being returned.
response.on('data', function (chunk) {
str += chunk;
// Create the listener for the end of the POST.
response.on('end', function (){
db.collection('weathercollection').save(str, function(err, records) {
if (err) throw err;
console.log("record added");
});
});
JSON 形式の気象データの抜粋:
{ "current_observation": {
"image": {
"url": "http://icons-ak.com/graphics/logo.png",
"title": "Weather Underground"
},
"display_location": {
"full":"My City, State",
"city":"My City",
Mongo に保存する前にデータを解析する必要はありませんか? それで、私は何が欠けていますか。私が言ったように、すべての気象データを完全にコンソールに出力すると、Node.JS と MongoDB の間で何か間違ったことをしているように見えます。
ありがとう。
アップデート***
この方法で「str」を解析しようとしました
// Create the listener for data being returned.
response.on('data', function (chunk) {
str += chunk;
var jsonResult = JSON.parse(str);
// Create the listener for the end of the POST.
response.on('end', function (){
db.collection('weathercollection').save(jsonResult, function(err, records) {
if (err) throw err;
console.log("record added");`
それもうまくいかなかったようです。もう一度見てみます。