2016-06-11 3 views
0

Я использую две функции function1, function2, следовательно, в node.js.узел mysql insert и выберите счетчик не работает

function1 использование для вставки данных в таблицу.

for(var j=0; j < length; j++){ 

    connection.query('INSERT INTO TestTable SET ?', { row_name : name }, function(err, res){ 
     if(err) throw err; 
    }); 
} 

function2, используя для выбора кол-во вставленном имени, кол.

connection.query('select row_name, count(*) as count from TestTable where row_name = ?', name , function (err, rows){ 
    console.log(rows); 
}); 

где мой log дает мне name : null, count : 0

то, что я делаю неправильно?

ответ

1

Прежде всего, выполнение запросов mysql в цикле - это плохая практика. Во-вторых, вы пропустите основы асинхронного потока в javascript. Here - хорошая статья, где объясняются основные понятия асинхронного программирования в JavaScript. connection.query является асинхронным, поэтому, если вы хотите, чтобы ваш код работал, вы должны запустить запрос подсчета в обратном вызове запроса insert на последней итерации.

Но, как я уже упоминал, это плохая практика, чтобы запускать их в цикле. Я бы посоветовал вам строить строку запроса в цикле для нескольких вставок, но запускать ее только один раз в конце (с запросом подсчета в обратном вызове).