J'utilise Node JS pour faire une demande à une base de données. Il arrive que je fasse une instruction SELECT et j'ai besoin de résultat pour faire un INSERT après.Faire une boucle de manière synchrone dans le nœud 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);
});
};
Depuis nœud est asynchrone, les résultats que je reçois de l'INSERT sont toujours du premier état de la base de données quand je lis appel compte() Comment puis-je faire de ce processus synchrone?
Merci
JS est asynchrone, mais ce que vous cherchez est une fonction de rappel à l'aide de vos résultats. –
Je sais que c'est asynchrone. J'ai juste besoin que la fonction appelée read_account soit synchrone. –