Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta aninhada no nó js usando mysql


Vejo dois problemas no seu código:
  • Você está chamando connection.end() de forma síncrona, mas suas consultas são executadas em um fluxo assíncrono. Você tem que chamar connection.end() somente quando você terminar a segunda consulta.
  • Você está usando um for normal loop para executar chamadas assíncronas (você loop externo).

Para realizar o que você está tentando fazer, você deve considerar esses cenários assíncronos. Você pode usar promises ou um módulo como async , que fornece muitos métodos para lidar com fluxos assíncronos, como async.each() :
connection.query(queryString, function(err, rows, fields) {
    if (err) throw err;

    async.each(rows, function (row, callback) {
        console.log('Product Name: ', row.product_name);
        var emp_query = 'SELECT * FROM tbl_employer';
        connection.query(queryString, function(emp_err, emp_rows, emp_fields) {
            if (emp_err) callback(emp_err);
            for (var e in emp_rows) {
                console.log('Employer Name: ', emp_rows[e].company_name);
            }
            callback();
        }); 
    });
    }, function (err) {
        connection.end();
    }
});

Agora vai garantir que connection.end() será chamado apenas quando todas as suas consultas terminarem.