[英]Node.js with Express: Push to an empty Array returns an empty Array
[英]Node.js mysql query returns empty array
我写了 node.js 脚本,但它没有按预期工作。 这是我的 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;
}
});
Main 函数返回我处理的承诺。
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){})
我得到第一个空数组,一分钟后我得到正常数组,结果就像 resolve() 工作两次一样。 但这是幸运的情况。 有时我会得到更多的空数组,然后是预期的结果数组。
我认为 'return reject(err)' 中的返回是不必要的,但这不应该解释这种行为。
您在处理查询的同一个承诺循环中是否有连接部分? 所以首先你用 promise 检查连接是否正常,然后你进行查询? 如果没有,那么这可能会导致一些问题。
您是否从数据库中检查过有多少请求即将到来?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.