为什么查询Firebase实时数据库需要侦听器?

我是Firebase和noSQL数据库的新手。我已经阅读了文档并观看了教学视频,但是有一个我尚未完全掌握的概念。

为什么查询数据库需要一个监听器,例如.on(“ value”)?

由于只要类型发生变化(创建节点,编辑节点,创建子节点),就会触发这些侦听器,是否应该有一种更直接的方法来从db获取数据?如

ref.orderBy("age"). equalTo(30).get()

一种方法,可以在执行指令时只获取其中的内容,而不必监听某种事件?

在SQL中,您不必等待数据库中的某些更改才能使此查询起作用:

SELECT * FROM TABLE WHERE X == Y

PS:我知道.once()也存在,但我的问题更多是:如果我的数据库从未更改,我将如何查询它并始终获得相同的查询结果/快照?

s1y2f3x4 回答:为什么查询Firebase实时数据库需要侦听器?

您尚未定义平台,因此我将使用此Swift伪代码示例。假设我们想一次获得所有用户的列表。

let usersRef = my_firebase.child("users")
usersRef.observeSingleEvent(by: .value,with: { snapshot in
    //all users are returned to the app in the snapshot
    //   .value means 'give me everything in the specified node'
    // so then we can iterate over the snapshot to get each users data
}

您可以随时调用上述代码来获取用户列表,并且不会在节点上添加观察者(侦听器)。一口气。

如果希望收到添加

用户的通知,
let usersRef = my_firebase.child("users")
usersRef.observe(by: .childAdded,with: { snapshot in
    //upon first calling this,each user will be sent to the app in the snapshot
    //  and after that,any user that's added
}

以上代码将观察者(侦听器)附加到用户节点,并且每当添加用户时,便会通过快照将其提供给应用。

请注意,使用.observeSingleEvent与.observe和.value来获取节点中的所有内容,而使用.childAdded来获取特定节点。

本文链接:https://www.f2er.com/3168522.html

大家都在问