在Firestore中读取和写入

17 Mar 2025 | 5 分钟阅读

在本节中,我们将学习如何在Firebase Firestore中进行读写操作。之前,我们创建了一个安卓应用程序并添加了Firebase。我们已经实现了所有必需的库和插件。我们已经创建了一个Firestore数据库。

将数据写入Firestore

要写入数据,我们必须使用getInstance()检索数据库实例,并引用要写入的位置。我们将从我们的活动中访问云Firestore实例。

正如我们已经知道的,数据存储在文档中,这些文档存储在集合中。因此,我们将隐式地创建集合和文档。当我们第一次向文档添加数据时,集合将自动创建。让我们看一个将映射添加到集合的例子。

有几种方法可以将数据写入Cloud Firestore,如下所示:

  1. 第一种方法是,我们在集合中设置文档的数据,显式地指定文档标识符。
  2. 我们可以通过向集合添加一个新文档来将数据写入数据库。Cloud Firestore自动生成文档标识符。
  3. 我们可以通过创建一个带有自动生成的标识符的空文档来将数据写入数据库。数据将在以后分配给它。

设置文档

我们使用set()方法来创建或覆盖单个文档。当我们使用set()方法来创建文档时,我们必须为要创建的文档指定一个ID。

当我们使用set()来创建一个文档时,让Cloud Firestore自动为我们生成一个ID(add())会更方便。

创建具有自动生成的ID的文档引用,然后在以后使用该引用(doc())也很有用。

数据类型

我们可以在文档中写入各种数据类型和对象。

自定义对象

我们可以用自定义类编写我们自己的java对象。这些自定义类在内部将对象转换为支持的数据类型。每个列类都必须有一个不带参数的公共构造函数,并且该类必须为每个属性都有一个公共getter。

从Firestore读取数据

有两种方法可以检索存储在Cloud Firestore中的数据。

  1. 调用一个方法来获取数据。
  2. 设置一个监听器来接收数据更改事件。我们发送数据的初始快照,然后在文档更改时发送另一个快照。

这两种方法都用于文档、文档集合或查询结果。让我们举一个例子,在这个例子中,我们用一些关于城市的数据填充数据库。

使用自定义对象

从集合中获取多个文档

我们还可以通过查询集合中的文档来检索多个文档。我们可以使用where()来查询所有满足特定条件的文档,然后使用get()来检索结果。

从集合中获取多个文档

将Cloud Firestore与Kotlin扩展一起使用

如果我们想将Cloud Firestore Android SDK与Kotlin Extensions一起使用,我们必须在应用程序的buid.gradle文件中添加以下库

我们必须确保有最新版本的maven.google.com。这个库传递性地包含了firebase-Firestore库。

Kotlin

Kotlin+KTX

将DocumentSnapshot字段转换为普通的Java对象

1) Kotlin

2) Kotlin+KTX

将QuerySnapshot转换为普通的Java对象

1) Kotlin

2) Kotlin+KTX

示例

我们正在实现一个android应用程序。它是一个用户登录和注册应用程序,有三个xml文件和四个Kotlin文件。activity_main.xml用于注册页面。activity_signing.xml用于登录,activity_welcome.xml用于从数据库检索数据。同样,有四个Kotlin文件,即MainActivity、Signing、welcome和User。

当用户注册时,他们会被添加到firebase控制台用户部分,并且与他们对应的数据存储在数据库中。签名功能与我们在身份验证部分所做的相同。当用户成功注册或注册后,他将切换到欢迎页面,在那里他会找到他的数据。

activity_main.xml, activity_signing, 和 activity_welcome

Read and Write in Firestore

MainActivity.kt

welcome.kt

输出

Read and Write in Firestore
Read and Write in Firestore