sql >> Databasteknik >  >> RDS >> Mysql

Kapslad fråga i node js med mysql

Jag ser två problem i din kod:

  • Du ringer connection.end() synkront, men dina frågor körs i ett asynkront flöde. Du måste anropa connection.end() först när du är klar med den andra frågan.
  • Du använder en vanlig for loop för att köra asynkrona samtal (du yttre loop).

För att uppnå det du försöker göra, måste du överväga de asynkrona scenarierna. Du kan använda promises eller en modul som async , som ger dig många metoder för att hantera assynkrona flöden, som 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();
    }
});

Nu kommer det att garantera att connection.end() kommer bara att anropas när alla dina frågor är klara.



  1. pip-installationen misslyckas med /usr/bin/clang:Ingen sådan fil eller katalog

  2. Mysql strip time-komponent från datetime

  3. Simulera fördröjningsfunktion i MySQL

  4. Odefinierad variabel:pdo, anrop till en medlemsfunktion prepare() på null