簡體   English   中英

Node.js mysql 查詢返回空數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM