sql >> Database teknologi >  >> RDS >> Mysql

Indlejret forespørgsel i node js ved hjælp af mysql

Jeg ser to problemer i din kode:

  • Du ringer til connection.end() synkront, men dine forespørgsler kører i et asynkront flow. Du skal ringe til connection.end() først når du er færdig med den anden forespørgsel.
  • Du bruger en almindelig for sløjfe for at køre asynkrone opkald (du yder sløjfe).

For at opnå det, du prøver at gøre, skal du overveje disse asynkrone scenarier. Du kan bruge promises eller et modul som async , der giver dig en masse metoder til at håndtere assynkrone flows, så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 vil det garantere, at connection.end() vil bare blive kaldt, når alle dine forespørgsler er afsluttet.



  1. Få alle poster fra MySQL-databasen, der er inden for Google Maps .getBounds?

  2. Automatiser implementering af din MySQL- eller Postgres-klynge fra backup

  3. MariaDB SUBSTR() Forklaret

  4. Kompilere PHP 5.1.6 med PDO MySQL