sql >> Databáze >  >> RDS >> Mysql

Vnořený dotaz v node js pomocí mysql

Ve vašem kódu vidím dva problémy:

  • Voláte connection.end() synchronně, ale vaše dotazy běží v asynchronním toku. Musíte zavolat connection.end() teprve když dokončíte druhý dotaz.
  • Používáte běžný for smyčka pro spouštění asynchronních volání (vy vnější smyčka).

Abyste dosáhli toho, o co se snažíte, musíte zvážit tyto asynchronní scénáře. Můžete použít promises nebo modul jako async , která vám poskytuje mnoho metod, jak se vypořádat s assynchronními toky, jako je 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();
    }
});

Nyní zaručí, že connection.end() bude zavoláno pouze po dokončení všech vašich dotazů.



  1. Instalace pdo_mysql na Amazon EC2 s PHP 5.5

  2. Kvalifikace názvu dočasného sloupce tabulky v jOOQ

  3. Zálohujte PostgreSQL pomocí pg_dump a pg_dumpall

  4. SCD typ 2