📌  相关文章
📜  Firebase实时数据库读写(1)

📅  最后修改于: 2023-12-03 14:41:12.782000             🧑  作者: Mango

Firebase实时数据库读写

Firebase 实时数据库是 Google 推出的一项 NoSQL 云数据库服务,非常适用于需要数据同步、实时更新的应用场景。本文将以数据库的读写为主要话题,介绍 Firebase 实时数据库的基础操作和实现步骤。

基本概念

在开始之前,需要了解一些 Firebase 实时数据库的基本概念:

  • 数据库: Firebase 应用可以包含多个数据库。
  • 数据库引用:包含引用特定数据库位置的信息,你可以对其进行 CRUD 操作。
  • 数据库节点(Node):就是 Firebase 数据库的存储区域,根据键值对的形式存储数据。
  • 数据集(Collection):由多个节点组成的拥有相同键名称的节点集合。
  • 数据:每个节点都拥有一个值,也就是存储在其中的数据。
基本操作
读取数据

读取数据是 Firebase 数据库最重要的操作之一,以下代码表示如何从 Firebase 数据库读取数据:

let ref = Database.database().reference()
ref.child("users").observeSingleEvent(of: .value, with: { (snapshot) in
   // 这里得到的 snapshot 包含了数据节点内容
   // 相关操作请看下面介绍
})

在上面的代码中,我们首先获取了一个数据库的引用(此处为 root 节点),然后使用 observeSingleEvent 方法监听数据。方法中的 .value 表示监听数据的方法,{ (snapshot) in … } 则是一段闭包,在其中可以对数据库读取到的数据进行处理。

写入数据

写入数据使用 setValue() 方法,如下所示:

let ref = Database.database().reference()
let usersRef = ref.child("users")
let key = usersRef.childByAutoId().key
let user = ["name": "Tom",
            "age": 27,
            "email": "tom@abc.com"]
let childUpdates = ["/users/\(key)": user]
ref.updateChildValues(childUpdates)

以上代码将创建一个数据节点,该节点的键为自动生成的唯一 ID,值为一个包含用户信息的字典。我们还使用 updateChildValues 方法记录下了这个新节点的键/值对。

更新数据

更新数据往往需要配合 setValue() 方法使用,如下所示:

let ref = Database.database().reference()
let newValues = ["name": "Jerry",
                 "age": 32,
                 "email": "jerry@abc.com"]
ref.child("users").child(userId).setValue(newValues)

以上代码使用了唯一的 ID 来更新所对应的用户节点,将其键/值存放进去,相当于完全替换原来节点的内容。

删除数据

删除节点使用 removeValue() 方法,如下所示:

let ref = Database.database().reference()
ref.child("users").child(userId).removeValue()

以上代码将删除具有特定 ID 的用户节点。

监听数据

Firebase 实时数据库最重要的特点之一就是能够处理实时数据更新。其实现方式是监听数据,只要节点的值有所变化,Firebase 就会自动更新应用中的数据。以下是实现数据监听的方式:

let ref = Database.database().reference()
ref.child("users").child(userId).observe(.value, with: { (snapshot) in
   let value = snapshot.value as? NSDictionary
   // 相关操作请看下面介绍
})

与读取数据的方式类似,我们首先获取了一个的数据库引用,然后使用 observe 方法来监听该数据库节点。闭包中的 snapshot 包含所监听节点的值,我们可以对其进行处理。

停止监听数据

停止监听具体的节点,使用 removeObserver 方法即可:

let ref = Database.database().reference()
let query = ref.child("users").child(userId)
query.observe(.value, with: { (snapshot) in
   // 子节点发生变化,实时进行同步
})
query.removeObserver(withHandle: handle)

注意,在上述代码中,我们引入了一个名为 handle 的变量,它存储了正在监听的数据的句柄。通过这个句柄,我们能够方便地停止数据监听。

总结

本文介绍了 Firebase 实时数据库的基本操作,包括读取数据、写入数据以及实现数据监听。通过以上实例,我们可以了解到 Firebase 数据库非常适合需要数据同步、实时更新的场景,并且非常容易上手。如果你还没有开始使用 Firebase 实时数据库,应该立即试试,一定不会让你失望。