我的代碼的用途是檢查數據庫是否有一個用戶名和密碼以對象User的形式傳遞給函數。節點JS沒有更新「全局變量」
我將成功變量初始化爲false。然後我說,如果我找到了記錄,那麼我會將它設置爲true。但是,即使找到記錄,成功變量仍然是錯誤的。該變量似乎沒有更新。爲什麼? 另外,我怎麼能傳回整個fetcheduser的結果,而我可以表明是否記錄被發現?非常感謝
LoginSuccess : function (User) {
var success = false;
function isEmptyObject(obj) {
return !Object.keys(obj).length;
}
function isEmptyObject(obj) {
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
return false;
}
}
return true;
}
var sql = require('mssql');
var config = require('./configuration/sqlconfig');
var fetcheduser;
sql.connect(config).then(function() {
console.log('Connected to DB');
new sql.Request().query("SELECT * FROM dbo.LocalUser WHERE Username = '" + User.username + "' AND Password = '" + User.password + "';")
.then(function (recordset) {
if (isEmptyObject(recordset)) {
console.log("The User does not exist");
} else {
fetcheduser = JSON.parse(JSON.stringify(recordset));
success = true;
console.log("The user is existed.");
}
}).catch(function (err) {
//When errors come
});
});
return success;
}
讓我問你這個問題:首先:將成功設置爲true,還是返回結果?提示:這可能不是你的想法。另外,你的select語句對於注入攻擊已經成熟 - 想起Bobby Tables ... – Krease
它是異步的:在成功設置爲true之前返回成功。 – bugovicsb
因此,如何在返回成功之前將其設置爲真? –