我的问题是,即使我已经从一个请求释放的连接回池中使用。 。 。
connection.release();
。 。 。我仍然会在60秒后触发下面的代码并记录一个错误(我假设预定义的超时)。
connection.on('error', function(err) {
console.log("Error with connection:" + connection.threadId);
return;
});
我敢肯定的连接被释放,因为如果我删除释放线路,并保持发送请求,我可以看到从池中使用不同的连接。同样的连接似乎被使用,如果我把他们进来。
途径编码
app.post('/addImageData', function (req, res) {
pool.getConnection(function(err,connection){
if (err) {
connection.release();
res.json({"code" : 100, "status" : "Error in connection database"});
return;
}
writeToDatabaseLog("Image post request made with ID:" + connection.threadId, connection);
uploadImageToCloudinary(req.body.image, connection)
.then(function(rawData) {
return addImageDataToDB(rawData, connection)
}).then(function(imageURL) {
return notifyIFTTTofImageCapture(imageURL, connection)
}).then(function(){
connection.release();
res.send(200);
}, function(){
connection.release();
res.send(500);
});
connection.on('error', function(err) {
console.log("Error with connection:" + connection.threadId);
return;
});
});
});
我Bodge修复
我试着读API reference的“池连接”和“错误处理”。
我发现如果我切换三个例子。 。 。
connection.release()
。 。 。至 。 。 。
connection.destroy()
。 。 。那么问题不再发生。
我相信这不是最好的解决方案,因为它会从池中删除连接。该API表示将创建一个新的连接,但感觉这会从池中移除。
我想我没有收到
这个问题似乎是,即使连接已返回到池中的事件侦听器的错误仍然有效。但是我不知道如何解决这个问题。
全码:
这是我的全部代码,但不包括上述bodge修复。 https://github.com/tbenyon/suphomie/blob/de855c898065a50c119f66b3773a17012e3c3b8e/app.js
测试
如果你想克隆回购和测试这个现场有一个名为“testDoorBellClient.py”的测试Python文件上这个承诺。
谢谢
这是我的第一个问题,所以如果我错过了什么有用的东西,请让我知道。
感谢您的支持。