Firebase Realtime数据库是一个NoSQL数据库,可以用来存储和检索我们的应用程序的数据。数据存储为JSON,整个数据库可以看作是一个巨大的JSON树。数据写在由相对路径(关联键)定义的特定位置,可以使用相同的路径检索。随着数据被添加到JSON树中,它将成为现有JSON结构中的一个节点。
使用DatabaseReference的observe(_:with)或observeSingleEvent(of:with:)方法从数据库中读取数据。这两个方法的区别在于,observe(_:with)将创建一个对象,该对象将连续侦听事件类型。每当发生事件时,通常是对数据进行更改,事件回调将被触发。使用observe(_: With),可以多次触发事件回调。比如你
相比之下,observeSingleEvent(of:with:)只触发一次事件回调。这对于读取只需要加载一次且不希望之后更改的数据非常有用。
两者监听的with对象都相同,包括:
.childAdded (A new child node is added to a location) 监听每新添的childe node
.childChanged (A child node at a location changes) 监听刚更改的childe node
.childMoved (A child node moves relative to the other child nodes at a loction) 监听移动的childe node
.childRemoved (A child node is removed from a locatin) 监听删除的childe node
.value (Any data changes at a location or, recursively, at any child node) 监听符合任何改变的childe node,这个最为常用。
监听的类型根据我们现在的View Controller想做的事去决定,比如现在开发一个社交聊天发动态软件,如果当前的View Controller负责发动态,那么监听事件是以.childAdded为主,如果是删除动态的Controller, 同理,.childMoved优先考虑。