为什么我的连接没有在每个循环中释放?相反,它超过了我的数据库的最大连接数并使我的应用程序崩溃。显然findOneByPhone
会释放连接,但与Async.each
结合使用时不会 - 我在这里做错了什么?
此函数在每个循环的异步中运行。
this.findOneByPhone = function(phone, req, res, callback) {
connection.acquire(function(err, con) {
con.query('select * from users where phone = ?', [phone], function(err, result) {
con.release()
if (err) {
callback(err)
} else {
callback(null, JSON.stringify(result[0], null, 4))
}
})
})
}
这是循环。
var friendsAlreadySignedUp = []
Async.each(friends, function(friend, callback) {
var formattedNumber = Phone.format(Phone.parse(friend.phoneNumbers[0].number, {country: { default: 'US' }}), 'International_plaintext')
User.findOneByPhone(formattedNumber, null, null, function(err, foundUser) {
// If user exists in DB, add corresponding object to friendsAlreadySignedUp
if (foundUser) {
var foundUserJSON = JSON.parse(foundUser)
foundUserJSON.originalNumber = friend.phoneNumbers[0].number
friendsAlreadySignedUp.push(foundUserJSON)
callback()
} else {
callback()
}
})
}, function() {
res.json({status: 0, message: 'findFriends succeeded.', result: friendsAlreadySignedUp})
})
它导致了这一点。
Error: ER_USER_LIMIT_REACHED: User 'b85497d5b39b53' has exceeded the 'max_user_connections' resource (current value: 15)