Javascript Firebase深度查询

Javascript Firebase深度查询,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,这个问题是关于实现firebase深度查询的。考虑FixBase:以下结构: 这里,我的ref指向结构的根,即/messages。因此,我: var ref = new Firebase("https://cofounder.firebaseio.com/messages"); 我想查询那些邮件Id的成员=-752163252。因此,基本上返回的对象应该是键为655974744的对象。我如何在firebase中执行此操作 以下是我在控制台中尝试的内容: ref.orderByChild("m

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

这里,我的ref指向结构的根,即
/messages
。因此,我:

var ref = new Firebase("https://cofounder.firebaseio.com/messages");
我想查询那些邮件Id的
成员=-752163252
。因此,基本上返回的对象应该是键为
655974744
的对象。我如何在firebase中执行此操作

以下是我在控制台中尝试的内容:

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

VM837:2 Found  null
我感觉到某个地方缺少了一个环节。基本上,我想知道是否有任何方法可以在没有父键id的情况下查询深层嵌套数据(在本例中为254878946559747444)

另外,如果我可以扩展我的问题,是否有一种方法可以添加一个侦听器,当添加一个包含
成员=-752163252
的新messageId(在本例中为25487894655974744)时,该侦听器会回叫

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

编辑:


我已经看过恐龙的例子,我就是这样尝试的,但是没有成功。

您的查询断言“members”节点是一个值为235642888的整数,当然不是。它是一个包含键列表的对象

相反,您可能希望使用以下语法和类似内容:

ref.orderByChild("members/235642888").equalTo(235642888);
请注意,实际上并不需要将键的值作为键本身。只需将其设置为二进制
true
1
即可节省存储空间。查询结果大致相同:

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

您的问题中包含了JSON树的图片。请将其替换为实际的JSON作为文本,您可以通过单击Firebase数据库中的导出按钮轻松获得该文本。将JSON作为文本使其具有可搜索性,使我们能够轻松地使用它来测试您的实际数据,并在我们的答案中使用它,一般来说,这是一件好事。@FrankvanPuffelen感谢您的提及。对不起,我会记住的。