簡體   English   中英

在MongoDB中插入多個數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM