web-dev-qa-db-ja.com

子の値によるFirebase検索

Firebaseデータベースには次の構造があります。 firebase database

名前、姓、または電子メールでユーザーを検索したいのですが、上のレベルにユーザーキーがあるため、これを実現する方法がわかりません。管理者セッションを実行しているため、ユーザーキーにアクセスできません。

私が試してみました:

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

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

41
Barbara Brina

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);
    });
});

orderByChild()の目的は、フィルタリング/検索するフィールドを定義することです。 equalTo()は、文字列、int、およびブール値を取得できます。

自動生成キー(pushKey)でも使用できます。

すべてのドキュメントを見つけることができます こちら

70
Gerard Cuadras