返しません。私はそれが返すように0を返します。しかし、この他のファイルでは、私はこれを行います:コールバック関数は、だから私はこれを行うに何も
これは0を返すので、これを行うべきではありません。
しかし、今、私のような文字列としてそれらを返す場合:
return "true";
と:
if(Database.checkEmailInUse(email) == "true")
それは動作します。
これはNodeJSの私の最初のプロジェクトで、ここで困惑しています。
EDIT ANSWER。ありがとうqqilihq! :
module.exports.checkEmailInUse = (email) => {
var queryTheEmail = (email, callback)=>{
connection.query('SELECT `id` FROM `users` WHERE email = ?',
[
email
],
function(err, rows) {
if (err) {
callback(err,null);
}
else{
callback(null,rows);
}
}
);
}
queryTheEmail(email, (err, rows) => {
if (err) {
console.error('SQL error: ', err);
return false;
}
if(rows.length > 0){
return true;
}
else{
return false;
}
});
}
問題は、あなたの 'checkEmailInUse'関数が実際に何も返さないということです。 DBクエリは非同期的に発生します。関数のネストをチェックします。コールバックを使用するか、約束を返すために、これをリファクタリングする必要があります。いずれにせよ、これはとりわけブーリアンとは何も関係ありません。 – qqilihq
オフトピック側のヒント:あなたが自分自身が本当にelse falseを返していることが分かった場合は、おそらく不要なコードです。あなたの 'if(rows.length> 0)...'は 'return rows.length> 0' –
@LiamGrayに置き換えることができます。これは私が最初にしていたもので、LOL以来の問題で酷いことをしています。 – user2287474