sql >> Database >  >> RDS >> Mysql

Geneste query in node js met mysql

Ik zie twee problemen in uw code:

  • Je belt connection.end() synchroon, maar uw query's worden in een asynchrone stroom uitgevoerd. Je moet connection.end() . aanroepen pas als je klaar bent met de tweede vraag.
  • Je gebruikt een gewone for lus om asynchrone oproepen uit te voeren (u buiten de lus).

Om te bereiken wat u probeert te doen, moet u rekening houden met die asynchrone scenario's. U kunt promises gebruiken of een module zoals async , die u veel methoden biedt om met asynchrone stromen om te gaan, zoals 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 zal het garanderen dat connection.end() wordt gewoon gebeld wanneer al uw vragen zijn voltooid.



  1. Hoe aanmeldingen werken op gekoppelde servers (T-SQL-voorbeelden)

  2. Wat is een Flat File Database? Hoe verschilt het van een relationele database?

  3. Hoe .sql-bestand uit te voeren met powershell?

  4. Hoe python mysqldb te gebruiken om veel rijen tegelijk in te voegen