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

几个小时后,我问这个问题 。 当我就这个问题进行调查时,我正在排除故障。

这里是循环,如果我执行函数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包或问题是与我的代码?

那么这个问题可能是在node-mysql包中,因为我使用了另外一个Node.js的mysql包,它似乎比我使用的更加stream行,而且更稳定。 一切正常,与新的包。 我可能会在github上用node-mysql的作者来解决这个问题。