2014-01-26 4 views
0

Я пишу для импорта данных из mysql в mongodb Я новичок в node.js & mongoDb, и мой вопрос заключается в том, как проверить, все ли вставлено для выхода из сценария? Он делает то, что он делает, но я не знаю, чтобы определить, что работа выполнена.Как проверить, закончен ли скрипт на node.js

var c = require('./config').development; 
var mysql = require('mysql'); 
var mySqlConnection = mysql.createConnection({ 
    host : c.mysqlHost, 
    port : c.mysqlPort, 
    database : c.mysqlDatabase, 
    user : c.mysqlUser, 
    password : c.mysqlPassword 
}); 
var MongoClient = require('mongodb').MongoClient 
, format = require('util').format; 




var values = new Array("0", "100000", "200000", "300000", "400000"); 



MongoClient.connect('mongodb://127.0.0.1:27017/amazon', function(err, db) { 

mySqlConnection.connect(function(err) { 
      if (err !== null) { 
       console.log(err); 
      } 

      values.forEach(function(limit) { 
         var sql = "SELECT id, ISO2, title, json_response FROM amazon_product WHERE id>"+limit+" LIMIT 100000"; 
         mySqlConnection.query(sql, function(err, rows) { 
          rows.forEach(function(row) { 
           try { 

            db.collection('amazon' , function(err, col){ 
             var obj = JSON.parse(row.json_response); 
             obj.iso2 = row.ISO2; 
             obj.mysqlId = row.id; 
             //How can I check that everything's is inserted? 
             col.insert(obj, function(){}); 

            }); 


           } catch (e) { 
            console.log('problem @id ' + row.id +' ' + e); 

           } 

          }); 
         }); 
         console.log("I'm on limit"+ limit); 
        }); 

     }); 

}); 

ответ

1

позволяет рассматривать эту строку:col.insert(obj, function(){});

когда метод закончен, второй аргумент функции (обратный вызов) вызывается.

background: Узел конвенции - любая функция обратного вызова должна иметь первый аргумент - объект ошибки. Это верно для insert функция также

col.insert(obj, function(err){ 
    if (err) console.log('Error happend'); 
    else console.log('every thing is fine'); 
}); 
+0

Да. это называется, если в MongoDb вставлен 1 объект, но я вставляю около 300 Кб объектов. – jsnoob

+0

он будет вызывать для каждой вызываемой функции времени, если клиенты 300 КБ будут получать доступ к этому коду, он будет называться 300 тыс. Раз. –

+0

Чтобы вставить объект в mongodb, вы вызываете insert. Поэтому, если вы называете это N раз, он будет печатать его N раз, в результате он вставляет N объектов, или я вас не понимаю? –

Смежные вопросы