だから私はこれをやっていると思ったが、私はそうは思わない。クエリの結果をthen()
の関数に渡そうとしています。私はconsole.log()
の2つの機能の中から結果をログに記録しています。最初の人は結果を吐き出す必要があります。 2番目のものは私にundefined
を与えています。私は何が間違っているのか分かりません。ノードJsのpromiseでresolve()にSQLクエリの結果が渡されない
var dbConnect =() => new Promise(
(res, rej) => {
var connection = mysql.createPool(Config.mariaDBCred);
connection.getConnection((err, connection) => {
if(err) return rej(err);
return res(connection);
});
}
);
var dbQuery = (connection, queryString, paramArray) => new Promise(
(res, rej) => {
var sql = mysql.format(queryString, paramArray);
connection.query(sql,
(err, results, fields) => {
connection.release();
console.log(results); //THIS DISPLAYS RESULTS FROM THE QUERY CORRECTLY
if(err) return rej(err);
return res(results, fields);
}
);
}
);
//CHECK IF EMAIL EXISTS
module.exports.doesEmailExist = (email, callback) => {
dbConnect().then(
(connection) => {
dbQuery(
connection,
'SELECT `id`, `password_hash` FROM `users` WHERE email = ?',
[email]
)
}
).then(
(results, fields) => {
console.log(results); //THIS DISPLAY UNDEFINED
if(results.length > 0) return callback(true, results);
return callback(false, "Email does not exist.");
}
).catch(
(reason) => {
console.log(reason);
return callback(false, "Internal Error");
}
);
}
待ち時間...最初の 'then()'の中に2番目の'then() 'を入れる必要がありますか?しかし、そうであれば、どうすれば2つのキャッチを避けることができますか? – user2287474
ではありませんが、これは最初の 'then'が正しく動作していないことを意味します。クエリーからバックティックを削除しようとします。'(ユーザからのID、パスワード...) ' – Taki
@Takiは残念ながら動作しませんでした。 – user2287474