javascript - Firebase 深度查询

标签 javascript firebase firebase-realtime-database

这个问题是关于实现 firebase 深度查询的。考虑 Firebase 中的以下结构:

enter image description here

在这里,我的 ref 指向结构的根,即 /messages。所以我有:

var ref = new Firebase("https://cofounder.firebaseio.com/messages");

我想查询那些具有 member = -752163252 的消息 ID。所以基本上返回的对象应该是带有键 655974744 的对象。我该如何在 Firebase 中执行此操作?

这是我在我的控制台中尝试过的:

ref.orderByChild("members").equalTo(235642888).on('value', function(snap){console.log("Found ",snap.val())});

结果是:

VM837:2 Found  null

我感觉某处缺少链接。基本上,我想知道是否有任何方法可以在没有父键 ID 的情况下查询深层嵌套数据(在本例中为 25487894,655974744)。

此外,如果我可以扩展我的问题,是否有一种方法可以添加一个监听器,该监听器在添加包含 member = -752163252 的新 messageId(在本例中为 25487894,655974744)时回调。

希望我的问题足够清楚。非常感谢任何帮助!

编辑:

我已经看过恐龙的例子,这就是我尝试过但没有奏效的方法。

最佳答案

您的查询断言“成员”节点是一个值为 235642888 的整数,但事实并非如此。它是一个包含键列表的对象。

相反,您会想要使用 deep child query语法和类似以下内容:

ref.orderByChild("members/235642888").equalTo(235642888);

请注意,您并不真的需要键的值就是键本身。您只需将其设置为二进制 true1 即可节省存储空间。查询大致相同:

ref.orderByChild("members/235642888").equalTo(true);

关于javascript - Firebase 深度查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611219/

相关文章:

javascript - jQuery - 将两个事件绑定(bind)到 AND 运算符

javascript - 来自 Razor 的 Google map

firebase - 如何在 Dart 中使用 firebase 推荐系统?

java - Firebase数据库重复数据

javascript - 在EJS模板中检索本地JSON文件数据

javascript - JQuery 如果条件不能正常工作

spring - 如何修复此 FirebaseApp 名称 [DEFAULT] 已存在! spring-boot 和 firebase

c# - 统一的 Firebase 远程配置仅获取默认值而不是真实值

javascript - 如何在 Angular Fire 中保存对象的属性而不删除其他属性?

javascript - 按降序从 Firebase 获取数据