如果使用node-mysql在相同的脚本中执行超过10次,则不会获得相同查询的响应

时间:2016-03-28 11:04:27

标签: mysql node.js node-mysql

几个小时后我问了question。当我把这个当前问题归零时,我正在对它进行故障排除。

这是循环,如果我执行函数selectPhotoById超过10次,我只得到10个查询的响应。

示例,对于以下循环。

for (var i = 0; i < 4; i++) {
    db.selectPhotoById("12246", function (res) {
        console.log(res[0].ID);
    });
}

在控制台响应中,我得到了

12246
12246
12246
12246

这很好用,但如果我像

那样增加循环
for (var i = 0; i < 24; i++) {
    db.selectPhotoById("12246", function (res) {
        console.log(res[0].ID);
    });
}

我只获得10个ID作为回复

12246
12246
12246
12246
12246
12246
12246
12246
12246
12246

以下是编写查询的文件的代码

var mysql = require('node-mysql');
var DB = mysql.DB;
var photo = new DB({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'photo'
});

function DataBase() { 
}

DataBase.prototype.selectPhotoById = function (photo_id, callback) {
    photo.connect(function (conn, cb) {
        conn.query("select * from photo where ID =" + photo_id, function (err, res) {
            if (err)
                throw err;

            return callback(res);
        });
    });
}

DataBase.prototype.insertThumb = function(photo_id, blob, size, callback){
    photo.connect(function(conn, cb){
       var query = 'INSERT INTO photo.photo_thumb (`photo_id`, `thumb`, `size`) values ("'+photo_id+'", "'+blob+'", "'+size+'")';
       conn.query(query, function (err, res){
            if (err) throw err;
            return callback(res);
       }); 
    });
}

DataBase.prototype.checkThumb = function(photo_id, size, callback){
    photo.connect(function(conn, cb){
        var query = 'SELECT count(*) as count FROM photo.photo_thumb WHERE photo_id = "'+photo_id+'" AND size = "'+size+'"'
        conn.query(query, function(err, res){
            if(err)throw err;
            return callback(res);
        });
    });
}

module.exports = DataBase;

同样的问题也发生在插入查询中。 这是node-mysql包的问题,​​还是我的代码问题?

1 个答案:

答案 0 :(得分:0)

嗯,问题可能是node-mysql包,因为我在使用Node.js的另一个mysql包之后发现它似乎比我使用的更受欢迎,以及更多稳定。新包装一切正常。我可能会在github上使用node-mysql的作者来解决这个问题。