2017-07-18 3 views
0

と私は戻ってすべての私のコレクションの取得するためにMongoDBを使用しています:。私は返すようにしたいコレクションを取得した後)(db.collectionを送信しようと見つける()クライアントに戻すAJAXリクエスト

rawData = db.collection('Forecasts').find({}); 

これはres.json()関数を介してクライアント側に送信されます。どのように私はそれを返すことができます。

(エクスプレスおよびノー​​ドのJSを使用して)私のサーバー側のコードを追加:

router.post('/forecastHistory', (req, res, next) => { 
    var rawData; 
    var forecasts = []; 
    // Connection url 
    var url = 'mongodb://localhost:27017/SimplyForecastDB'; 
    // Connect using MongoClient 
    MongoClient.connect(process.env.MONGODB_URI || url, (err, db) => { 
    if (err) { 
     console.log('Unable to connect to MongoDB server.'); 
    } 
    console.log('Connected to MongoDB server.'); 
    rawData = db.collection('Forecasts').find({}).forEach(function(doc) { 
     //console.log(JSON.stringify(doc, undefined, 2)); 
     forecasts.push(doc); 
    }); 

    db.close(); 
    }); 
    forecasts.forEach(function(doc){ 
    console.log(JSON.stringify(doc, undefined, 2)); 
    }); 
    res.json(forecasts); 
}); 

(JSのクエリとAjaxを使用して)にここに私のクライアント側のコードを追加:

$("#history").click(function() { 
    $.post('/forecastHistory', function(result) { 
    result.forEach(function(forecast){ 
     $("#forecast").html(
     "<p class=\"lead\">" + forecast.location + "</p>" + 
     "The summary of today: " + forecast.summary + 
     "<br>" + "Temp: " + forecast.temperature + " C" + 
     "<br>" + "It feels like: " + forecast.feelsLike + " C" + 
     "<br>" + "The Humidity: " + forecast.humidity + " %" + 
     "<br>" + "Wind Speed: " + forecast.windSpeed + " km/h" + 
     "<br>" 
    ) 
    }); 
    }); 
}); 

を私がいただければ幸いです助けて。

+0

こんにちは、使用しています。あなたはあなたのクライアントのconsole.logの結果を返して、結果を教えてください。 – kikiwie

+0

こんにちは、私は、クライアント側にrawDataオブジェクトを移動する必要があります、私のためにこのサーバー側のコードで動作しません。 –

答えて

0

あなたのコードによれば、MongoDBからの応答を得る前にクライアントに応答を送信しているように見えるので、 'forecasts'変数は本質的に空です。あなたが反応して、アレイを送りたいので、あなたの要求をのみ、あなたはgetメソッドを使用して投稿してはならないDBからデータを取得する場合と、内のtoArrayの代わりに、forEachの

最初のすべて
router.post('/forecastHistory', (req, res, next) => { 
var rawData; 
var forecasts = []; 
// Connection url 
var url = 'mongodb://localhost:27017/SimplyForecastDB'; 
// Connect using MongoClient 
MongoClient.connect(process.env.MONGODB_URI || url, (err, db) => { 
if (err) { 
    console.log('Unable to connect to MongoDB server.'); 
} 
console.log('Connected to MongoDB server.'); 
rawData = db.collection('Forecasts').find({}).toArray(function(err,doc) { 
    if(err){ 
    console.log(err); 
    return; 
    } 
    res.json(doc); 
    res.end(); 
}); 

db.close(); 
}); 
}); 
+0

ありがとうございます! –

関連する問題