私の意図するコードの使用は、データベースにユーザUserの形式で関数に渡されるユーザ名とパスワードが設定されているかどうかをチェックすることです。ノードJSが "グローバル変数"を更新しない
私は成功変数をfalseに初期化します。そして、もし私がその記録を見つければ、私はそれを真にするでしょう。ただし、レコードが見つかった場合でも、success変数はまだfalseです。変数は更新されていないようです。どうして? また、レコードが見つかったかどうかを示すことができますが、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;
}
私にこれを聞かせてください:どちらが先に来ますか?成功を真にするか、結果を返しますか?ヒント:それはおそらくあなたが考えるものではありません。また、あなたのselectステートメントは注入攻撃のために熟しています - Bobby Tablesのことを考えてください... – Krease
これは非同期です:成功に戻り、trueに設定されています。 – bugovicsb
成功を返す前にそれを真に設定するにはどうすればよいですか? –