Nested query in node js using mysql

前端 未结 3 1527
感动是毒
感动是毒 2021-02-14 20:47

I am trying following code at node js using mysql but getting error \"Cannot enqueue Query after invoking quit.

var mysql = require(\'mysql\');

var connection          


        
3条回答
  •  遇见更好的自我
    2021-02-14 21:09

    I see two problems in your code:

    • You're calling connection.end() synchronously, but your queries run in a asynchronous flow. You have to call connection.end() only when you've finished the second query.
    • You're using a regular for loop to run assynchronous calls (you outter loop).

    To accomplish what you're trying to do, you have to consider those assynchronous scenarios. You could use promises or a module like async, that provides you a lot of methods to deal with assyncronous flows, like 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();
        }
    });
    

    Now it will guarantee that connection.end() will just be called when all your queries have finished.

提交回复
热议问题