Javascript 带数据过滤的监听查询

Javascript 带数据过滤的监听查询,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有这个结构 comments: - FG1MaPfTFsdgdsgsruL9Cgx5sY2 + content + value: "My comment" + creator: "0U1MaPfTF2fwcgqWuruL9Cgx5sY2" + date_create: "2015-02-21T12:40:35Z" + users[] + CByXgSgB4khZ5LgugXGRdfK7CLk2 + XakJ8zn711bUeSpCK1ss

我有这个结构

comments:
 - FG1MaPfTFsdgdsgsruL9Cgx5sY2
   + content
     + value: "My comment"
   + creator: "0U1MaPfTF2fwcgqWuruL9Cgx5sY2"
   + date_create: "2015-02-21T12:40:35Z"
   + users[]
     + CByXgSgB4khZ5LgugXGRdfK7CLk2
     + XakJ8zn711bUeSpCK1ss7Fsz7JX2
   + relations[]
     + HTyXgSgB4khZ5LgugXGRdfK7CLk2
     + CakJ8zn711bUeSpCK1ss7Fsz7JX2
   + settings[]
     + duration: 2
如何在应用程序中编写适当的查询侦听,以便当
用户UID
出现在
用户[]
中时,它将立即收到消息


另外一个过滤器将是time in
duration

首先获取用户uid:

var user = firebase.auth().currentUser;
var uid;

if (user != null) {
  uid = user.uid;
  let database     = firebase.database();
  let userRef      = database.ref("users").orderByKey().equalTo(uid);
    userRef.on('value', ((snapshot) => {
    if(snapshot.exists()){
    console.log(snapshot.val());
      } 
   });
}

尝试上述操作,首先检索
uid
,然后添加对节点
users
的引用,并使用
orderByKey()
可以查询
uid
,然后使用
exists()
您可以检查它是否存在于数据库中。

您尝试了什么?@PeterHaddad我想持续筛选集合,仅当我的UID在该对象的列表中并且满足日期条件时才使用该对象您使用的是实时数据库而不是firestore,对吗?@PeterHaddad realtime database如果我不调用使用
on
once
功能,数据库查询将不会进行,也不会下载任何数据?
on
once
用于检索数据,以便下载数据。在您的情况下,如果要限制
let userRef=database.ref(“用户”),最好使用
once
on
.orderByKey().equalTo(uid)它是如何设置过滤器的,还是已经发送了一个查询并将结果保存在一个变量中?这只是设置过滤器,当您使用
一次
将事件附加到它时,您就可以检索结果,这
让userRef=database.ref(“用户”).orderByKey().equalTo(uid)不会给出结果。这是结果
snapshot.val()
您明白了吗?