0
我正在使用Node JS向数据库发出请求。碰巧我正在做一个SELECT语句,我需要它的结果来做一个INSERT。在节点JS中同步循环
var index = 1;
async.whilst(
function() { return index < 10; },
function(callback) {
index++;
let line = csv_json[index][0].split(';');
let block = csv_json[index];
read_account(line);
callback(null, index);
},
function(err, n) {
if (err) throw err;
}
);
function read_account(csv, index) {
if (index == csv_json.length) return;
let line = csv_json[index][0].split(';');
let block = csv_json[index];
var account = line[0];
waterfall([
function(callback) {
connection.query('SELECT id FROM account WHERE account_number = ' + account,
function(error, results, fields) {
if (error)
throw error;
console.log(results);
callback(null, results);
});
},
function(results, callback) {
if (results == null || typeof results == undefined || results.length == 0) {
console.log("ENTREI");
connection.query('INSERT INTO account (account_number) VALUES (' + account + ')',
function(err, results, fields) {
callback(err, "1 account inserted!")
if (err)
throw err;
});
}
//else callback(null,"record already in db")
},
], function(err, success) {
if (err) throw err;
//console.log(success);
});
};
由于节点是异步的,结果我从插入从数据库中的第一状态越来越总是当我打电话读帐户()我怎样才能让这个过程同步?
谢谢
JS是异步的,但你要找的是使用结果的回调函数。 –
我知道它是异步的。我只需要调用read_account的函数是同步的。 –