简体   繁体   English

Node.js mysql 查询返回空数组

[英]Node.js mysql query returns empty array

I wrote node.js script and it works not as expected.我写了 node.js 脚本,但它没有按预期工作。 Here is my js code, that describes mysql connection;这是我的 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 returns promise that I handle. 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);
        });
    });

}

But I get strange behavior of mysql module.但是我得到了 mysql 模块的奇怪行为。 In getRecipes(par1,0).then(function(results){}) I get first empty array and one minute later I get normal array with results as if resolve() worked twice.getRecipes(par1,0).then(function(results){})我得到第一个空数组,一分钟后我得到正常数组,结果就像 resolve() 工作两次一样。 But it's Lucky case.但这是幸运的情况。 Sometimes I got more empty arrays and then expected array with results.有时我会得到更多的空数组,然后是预期的结果数组。

I think the return in 'return reject(err)' is unnecessary, but that shouldn't explain this behaviour.我认为 'return reject(err)' 中的返回是不必要的,但这不应该解释这种行为。

Do you have the connection part in the same promise loop that handles the query?您在处理查询的同一个承诺循环中是否有连接部分? So that first you check with promise that connection is ok, and after that, you make the query?所以首先你用 promise 检查连接是否正常,然后你进行查询? If not, then that might cause some problems.如果没有,那么这可能会导致一些问题。

Have you checked from the database, that how many requests are coming?您是否从数据库中检查过有多少请求即将到来?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM