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()
您明白了吗?