Firebase按子值搜索

Bar*_*ina 43 javascript firebase firebase-realtime-database

我的Firebase数据库上有以下结构: 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);
    });
});
Run Code Online (Sandbox Code Playgroud)

但它带来了数据库中的所有用户.有任何想法吗?

Ger*_*ras 74

您可以使用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);
    });
});
Run Code Online (Sandbox Code Playgroud)

目的orderByChild()是定义要过滤/搜索的字段.equalTo()可以接收字符串,int和布尔值.

也可以与自动生成的键(pushKey)一起使用.

您可以在这里找到所有文档


Joa*_*oan 7

警告,以避免不愉快的意外:当您使用orderByChildequalTo不要忘记您的数据添加索引(这里的DOC)

如果你不这样做,所有的点头都会被下载和过滤客户端,如果你的数据库增长,这可能会变得非常昂贵。