0
node.jsスクリプトを書きましたが、期待通りに動作しません。 ここに私のjsコードは、mysqlの接続を記述する。Node.js mysqlクエリが空の配列を返します
var mysql = require('mysql');
var createConnectionMYSQL;
var connectCount=0;
(createConnectionMYSQL = function() {
con = mysql.createPool({
connectionLimit:10,
host: "*****",
user: "*****",
password: "********",
database: "dbname"
});
console.log(++connectCount);
})();
con.query("SET SESSION wait_timeout = 120");
con.query('set names utf8');
con.on('error', function (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
createConnectionMYSQL();
} else {
throw err;
}
});
メイン関数は、私が扱うことを約束します。
function getRecipes(str, page) {
return new Promise(function (resolve, reject) {
//unimportant code
var sql = 'SELECT ID, Recept, MATCH (Recept) AGAINST ("+' + ingredients[0] + '*" IN BOOLEAN MODE) as REL FROM recipes WHERE (MATCH (Recept) AGAINST ("+' + ingredients[0] + '*" IN BOOLEAN MODE))>0 ORDER BY REL';
if (page != 0) sql += ' LIMIT ' + (page * 12) + ' ,12';
con.query(sql, function (err, result, fields) {
if (err) return reject(err);
// console.log(result + ' ' + sql);
resolve(result);
});
});
}
しかし、私は奇妙なmysqlモジュールの動作を取得します。 getRecipes(par1,0).then(function(results){})
で私は最初に空の配列を取得し、1分後にはresolve()が2回働いたかのように結果が通常の配列になります。しかし、それはラッキーなケースです。時々私は空の配列を持っていて、次に結果が期待される配列を返します。
'解決 'が2回トリガーされたかどうか確認しましたか? –
@RyanWu、私はちょうど確認しました、aneはい、 '解決'は複数回起動...しかし、なぜですか?私は正しいmysqlのクエリを持っています。 –