そのため、私は Node で初めての試みを行っていますが、MySQL 接続の操作方法について頭を悩ませることはできません。スクリプトはこのようにいくらか単純化されています
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '192.168.40.1',
user : 'user',
password : 'password',
database : 'database'
});
function DoSomething(connection, item, callback) {
connection.query(
'SELECT COUNT(*) AS count FROM another_table WHERE field=?',
item.field,
function (err, results) {
if (err) throw err;
if (results.length > 0 && results[0].count >= 1) {
callback(err, connection, item, 'Found something')
}
});
}
function DoSomethingElse(connection, item, callback) {
// Similar to DoSomething()
}
function StoreResult(err, connection, item, reason) {
if (err) throw err;
connection.query(
'INSERT INTO result (item_id, reason) VALUES (?, ?)',
[item.id, reason],
function (err, results) {
if (err) throw err;
});
}
connection.query('SELECT * FROM table WHERE deleted=?', [0], function (err, results)
{
if (err) throw err;
results.forEach(function (item, index) {
DoSomething(connection, item, StoreResult);
DoSomethingElse(connection, item, StoreResult);
});
});
connection.end();
私が問題を抱えているのは(私が知る限り)、すべてのが終了する前に呼び出されDoSomething()
たように見えるため、接続が閉じているときにクエリを実行できないというエラーが発生することです。connection.end()
DoSomething()
ライブラリをいじってみましたasync
が、これまでのところどこにも行きませんでした。これを行う方法について良いアドバイスを持っている人はいますか?