我正在编写从mysql导入数据到mongodb我是node.js&的新手。 mongoDb和我的问题是如何检查是否所有插入以退出脚本?它使它成为了它的目标,但我不知道确定工作已经完成。
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);
});
});
});
答案 0 :(得分:1)
让我们考虑以下几行: col.insert(obj, function(){});
当方法完成时,调用第二个参数函数(回调)。
后台:节点约定 - 任何回调函数都应该有第一个参数 - 错误对象。 insert
函数也是如此
col.insert(obj, function(err){
if (err) console.log('Error happend');
else console.log('every thing is fine');
});