[英]node.js - connection pooling
大家好,
我只是想知道,這是否是正確的方法:
用戶每次登錄時都會調用以下代碼,它會檢查用戶名和令牌,如果匹配,則會打開主菜單頁面,否則將返回登錄頁面。
事實是,它們都可以在Chrome瀏覽器中運行,但是有時它不能在Firefox中運行,只是根本不調用connection.query()部分。
所以我只是和你們一起檢查,如果下面的代碼一切正常,或者我可以改進或更改。
var db_pool = mysql.createPool({
host: 'localhost',
user: 'dbuser',
password: 'pass',
database: 'db_name'
});
function CheckUser(username, token)
{
db_pool.getConnection(function(err, connection)
{
console.log(" [i] Getting connection from pool. ");
var entry = 0;
var query = connection.query("SELECT token FROM users where token = '"+token+"' and user_id = '"+username+"'");
query.on('result', function(data){
entry++;
});
query.on('error',
function(err){
throw(err);
}
);
query.on('end',
function()
{
if(entry == 1)
{
console.log(" [info] User ["+username+"] authorized.");
/* DO STUFF */
}else
{
console.log(" [Error] User ["+username+"] does not have token: ["+token+"].");
return false;
}
}
);
console.log(" [i] Returning back connection to pool. ");
connection.release();
});
}
任何幫助是極大的贊賞,
亞歷克斯
我相信這種間歇行為是因為您的release()語句與連接一致,而不是在“ end”處理程序中。 這對我有用:
var mysql = require('mysql'),
config = require('./config.json');
var pool = mysql.createPool( config );
var checkUser = function(username, token) {
pool.getConnection(function(err, connection) {
if (err) throw err;
console.log(" [i] Getting connection from pool. ");
var entry = 0,
statement = 'SELECT token FROM users where token = ? and user_id = ?',
query = connection.query( statement, [ token, username ] );
query.on('result', function(data) {
console.log( data );
entry++;
});
query.on('error', function(err) {
console.log( err );
throw err;
});
query.on('end', function() {
if (entry === 1) {
console.log(" [info] User ["+username+"] authorized.");
/* DO STUFF */
} else {
console.log(" [Error] User [", username, "] does not have token [', token, ']');
}
console.log(" [i] Returning back connection to pool. ");
connection.release();
});
});
};
console.log('check the user...');
checkUser( 'test-user', 'mytoken');
我能夠毫無問題地對此進行測試(使用替代語句)。 我還將配置內容放在單獨的文件中,並用參數替換了字符串語句。
希望這可以幫助...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.