2016-11-07 7 views
18

firebase databaseFirebase検索私はFirebaseデータベースに次のような構造を持っている

私は名前、姓または電子メールでユーザーを検索したいだろうが、私は上のレベルでは、ユーザーのキーを持っているとして、私はこれをどのように達成できるのか分かりません。私は、管理者セッションをやっているので、ユーザーキーにアクセスすることはできません。

私が試してみました:

let usersRef = firebase.database().ref('users'); 
usersRef.orderByValue().on("value", function(snapshot) { 
    console.log(snapshot.val()); 
    snapshot.forEach(function(data) { 
     console.log(data.key); 
    }); 
}); 

をしかし、それは、データベース上のすべてのユーザーをもたらします。何か案は?

答えて

24

equalTo()を使用して任意の子を見つけることができます。 nameによってあなたのケースでは:

ref.child('users').orderByChild('name').equalTo('John Doe').on("value", function(snapshot) { 
    console.log(snapshot.val()); 
    snapshot.forEach(function(data) { 
     console.log(data.key); 
    }); 
}); 

あなたはすべてのドキュメントhere

+0

はオートコンプリートシステムとして実現することが可能にこれは見つけることができますか?同様に、ユーザーが 'John'と入力すると、関連性に基づいてorderByChildを呼び出すことができますか? – Epicality

+0

@Epicalityあなたが言及しているようなことをするには 'startAt()'を使うことができます。 [こちら](https://firebase.google.com/docs/database/web/lists-of-data#filtering_data)にすべてのドキュメントがあります。しかし、基本的に 'equalTo()'で検索しますが、文字列がユーザーの入力を開始するかどうかを確認するだけです。 –

+0

どのようにして2つのフィールドwthブール値を持つノードを得ることができますか?最初のフィールドまたは2番目のフィールドは「true」ですか? –

関連する問題