現在、Angular and Meteorで電子メールでユーザーを検索しようとしています。クライアント側のコードではAccounts.findUserByEmail()
を使用しています。 クライアントでは、私はMeteor.call()
を非同期で呼び出しています。問題はconsole.log()またはalert()しか返すことができないが、例えばreturn true
またはreturn false
のように値を返すことができないということです。私のクライアントが読むことはありませんか?私のクライアント上のどこかに続いてMeteor.call()からAccounts.findUserByEmail(email)にbooleanを返す方法
checkUserByEmail : function (email) {
this.unblock();
check(email, Match.Any);
console.log('Checking to see if ', email, 'is registered')
var userEmail = Accounts.findUserByEmail(email);
if(userEmail){
console.log(userEmail + ' Email account is registered')
return true
}
else{
console.log(userEmail + ' Email account is not registered')
return false
}
return userEmail;
}
:ここ
は私のサーバー側のメソッドのプレビューである私は、ユーザーが登録されているかどうかを確認するために$ scope.doesUserEmailExistを使用しています$scope.doesUserEmailExist = function(judge){
Meteor.call('checkUserByEmail', judge.email , function(err, res){
if(res){
console.log(judge.email + ' exists as a registered email!');
alert('Judge is Valid')
return true;
}
else if(err){
console.log('Error ',judge.email , 'does not exist!');
return false;
}
})
}
私入力フォームにメールを入力してください。有効なメールアドレスを入力すると、console.log値が表示されますが、return
の値は読み取れません。 私は$scope.doesUserEmailExist(email) === true
を使うことができると思っていましたが、成功したことはありませんでした。
.log(judge.email + 'は登録された電子メールとして存在します!')だから私はなぜ私は戻り値を取得していないのだろうかと思っていた。 – Felice
はい、いつでもコンソールに印刷することができます.....また、いつでもアラートを行うことができます。何が起きているのかを知りたい場合は、doesUserEmailExist関数の最後にconsole.log( "end of doesUserEmailExist")を入れてください。 –
あなたは関数の終了を見てから、コールバックは –