Mysql
 sql >> база данни >  >> RDS >> Mysql

Вложена заявка в node js с помощта на mysql

Виждам два проблема във вашия код:

  • Извиквате connection.end() синхронно, но вашите заявки се изпълняват в асинхронен поток. Трябва да извикате connection.end() само когато завършите втората заявка.
  • Използвате обикновен for цикъл за изпълнение на асинхронни повиквания (извън цикъла).

За да постигнете това, което се опитвате да направите, трябва да вземете предвид тези асинхронни сценарии. Можете да използвате promises или модул като async , което ви предоставя много методи за справяне с асинхронни потоци, като 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();
    }
});

Сега ще гарантира, че connection.end() ще бъде извикан само когато всичките ви заявки приключат.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вложени връзки със Sequelize

  2. Хибернация, принудително времеви клеймо да се запази/зареди като UTC

  3. Има ли начин в MySQL да обърнете булево поле с една заявка?

  4. MYSQL UNION DISTINCT

  5. Емоджитата не се вмъкват в възела на базата данни js mysql