[英]Insert Multiple Data in MongoDB
我正在使用此天氣API收集數據並將其存儲在MongoDB中。 但是,我想存儲多個位置的數據。 到目前為止,我只能做到這一點。 到目前為止,我的數據在MongoDB中顯示為null
。
mongodb.MongoClient.connect('mongodb://localhost/weatherdb', function(error, database) {
if(error != null) {
throw error;
};
var t = weather.find({search: 'Montreal, Canada', degreeType: 'F'}, function(err, result1) {
if(err) console.log(err);
});
var x = weather.find({search: 'Ottawa, Canada', degreeType: 'F'}, function(err, result2) {
if(err) console.log(err);
});
var y = weather.find({search: 'Toronto, Canada', degreeType: 'F'}, function(err, result3) {
if(err) console.log(err);
});
database.collection('data').insert(
{
Montreal: t,
Ottawa : x,
Toronto : y
},function (error, result) {
if (error) {
console.log("ERROR: " + error);
}
});
});
如果有人可以告訴我該怎么做,我將不勝感激。
問題是每個查詢都是異步的,但是您並沒有像您認為的那樣將它們的結果捕獲到變量中。 這些查找操作的每個結果僅在其回調函數中可用。 但是,與嵌套所有回調相比,您可以執行更好的流控制。 流量控制可以通過Promises或Asyncjs庫完成,我非常喜歡后者。
使用async.map,您可以遍歷您要進行的查詢,就像這樣
var queries = { 't' : {search: 'Montreal, Canada', degreeType: 'F'}, 'x': {search: 'Ottowa, Canada', degreeType: 'F'}, 'y': {search: 'Toronto, Canada', degreeType: 'F'}]
async.mapValues(queries, function(query, key, cb) { weather.find(query, cb); }, function(err, results) {
database.collection('data').insert(
{
Montreal: results.t,
Ottawa : results.x,
Toronto : result.y
},function (error, dbResult) {
if (error) {
console.log("ERROR: " + error);
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.