2016-12-08 4 views
1

サインアッププロセス(電子メールが登録されていない場合)に進む前に、電子メールがFirebaseアプリケーション(Javascript/Web)に登録されているかどうかを確認する関数を作成しようとしています。Firebase - 電子メールが登録されているかどうかを確認する最も効率的な方法は何ですか?

私はactive_emailsという名前のノードを作成しましたが、これは登録された電子メール(配列のようなもの)で埋めたいと思っていました。私はこのリストに対して電子メールをチェックしようとしていました。存在しなければ、ユーザーは登録プロセスを進めることができます。

私はここで答えをご覧ください:Proper way to store values array-like in Firebase Firebaseは配列内にキーを作成します。したがって、通常のJavascript配列チェックは機能しません。上記の答えがどのように働いているのか理解していますが、Firebaseの登録ユーザーの電子メールを調べているので、このチェックを行う別の方法はありますか?

上記の答えでFirebaseがコンパイルしてからメールの配列をユーザのクライアント側に送り返す必要があると思いますか?これはパフォーマンスに影響を及ぼす可能性があります(ファイルに数十万、または何百万もの電子メールがある場合)、すべてのユーザーの電子メールがクライアントに公開されるのでしょうか?ユーザーが登録されているかどうかを確認するもう1つの方法はありますか?登録を試みた後に重複した電子メールのエラーをキャッチするようなものです(これについては迷惑なようですが)。

トップの回答:How to find out if an email is already registered with Firebase Simple Login?は、電子メールが登録されているかどうかを確認する方法としてfetchProvidersForEmailを使用することを示唆していますが、その回答はアンドロイド用で、Javascript/Webでそのようなことを行うことができるかどうかはわかりません。

私はここで、このメソッドを統合しようとしました:

function checkEmail(){ 
     firebase.database().ref().fetchProvidersForEmail("[email protected]").once("value", function(snapshot) { 
     console.log(snapshot); 
    }); 
} 

をしかし、それはエラーを示していますfirebase.database(...).ref(...).fetchProvidersForEmail is not a function。誰でもこのチェックを達成するための最善の方法についてのアイデアはありますか?

ありがとうございます!

+1

createUserWithEmailAndPassword関数がエラーをスローしたメールアドレスが既に登録されている場合、認証/電子メールすでに使用中。それを使用できますか? – Jay

答えて

2

このメソッドは、認証のためにある: はfirebase.auth().fetchProvidersForEmail("[email protected]")

関連する問題