Проблема заключается в том, что запрос является асинхронным внутри цикла, мне нужно что-то выполнить, когда завершение запроса и для всех запросов завершено, если я что-то выполнил после того, как запрос не был выполнен
app.post('/consulta',(req,res)=>{
var data = req.body.frase;
let consulta;
let respuesta = [];
for(let i=1;i<data.length;i++){
consulta = 'SELECT * FROM imagen WHERE nombre = "${data[i-1] +' '+ data[i]}"';
connection.query(consulta, function (error, results, fields) {
if (error) throw error;
if(results.length > 0){ // Si existe una seña que tenga 2 palabras
data[i-1] = data[i-1] +" "+data[i]; // Unidos jamas seran vencidos
data.splice(i, 1);
}
});
}
})
попробуйте сделать это:
app.post('/consulta',(req,res)=>{
var data = req.body.frase;
let consulta;
let respuesta = [];
query(data).then(result => {
// implement your success case...
}).catch(err => {
//throw exception here...
});
});
function query(data){
return new Promise((resolve, reject) => {
var counter = 0;
if (data.length > 0){
for(let i=1;i<data.length;i++){
consulta = 'SELECT * FROM imagen WHERE nombre = "${data[i-1] +' '+ data[i]}"';
connection.query(consulta, function (error, results, fields) {
if (error) reject(error); //terminate the promisse...
if(results.length > 0){ // Si existe una seña que tenga 2 palabras
data[i-1] = data[i-1] +" "+data[i]; // Unidos jamas seran vencidos
data.splice(i, 1);
}
counter++;
if (counter >= data.length){
resolve("Everything OK");
}
});
}
} else {
reject("There are no data"); //terminate the promise...
}
});
}
Promise.all()
вместо написания всей этой логики самостоятельно.