我正在處理一個函數,它將返回一個布爾值。該值表示用戶是否存在於數據庫中。目前我有這個:從NodeJS中的MYSQL返回布爾值
function checkIfExists(){
var sql = "SELECT * FROM Users WHERE user = " + mysql.escape(req.body.username);
var rows = 0;
database.query(sql, function(err, result, fields){
console.log(result.length);
rows += result.length;
});
return rows > 0;
}
console.log(checkIfExists());
我使用'console.log(result.length)'來驗證是否有結果。當我測試了一些投入,我得到這個:
false
1
這很奇怪,因爲有一個結果,所以行應該等於1,但隨後返回false,而不是真實的。有沒有可能是行的值不會改變中「database.query(...」
.query接受函數作爲其第二個參數,當查詢完成時調用該函數。換句話說,在函數作爲參數傳遞給查詢之前,原始函數可能會返回。 – Riwen
你在返回之前控制行嗎?那是否包含一個? – Deep
如果我在'return rows> 0'之前放置'console.log(rows)',它會給我'1'。但函數返回false – Soccerrlife