📌  相关文章
📜  如何从Android中的Firebase Firestore读取数据?(1)

📅  最后修改于: 2023-12-03 15:08:14.859000             🧑  作者: Mango

如何从Android中的Firebase Firestore读取数据?

Firebase Firestore是Firebase提供的一项强大的云数据库服务,允许你存储、同步和查询数据。在Android应用中,你可以利用Firestore从云端读取数据。

步骤 1:设置

为了使用Firestore,你需要在Android项目中添加Firestore库的依赖项。在Gradle文件中添加以下代码:

dependencies {
    // ...

    // 添加Firestore的Android库依赖项
    implementation 'com.google.firebase:firebase-firestore:23.0.0'

    // ...
}

然后,在你的项目中,使用Firebase实例初始化Firestore实例:

FirebaseFirestore db = FirebaseFirestore.getInstance();

现在你已经准备好从Firestore读取数据了。

步骤 2:读取数据

假设你的Firestore中有一个名为“users”的集合,其中包含了每个用户的名字和年龄。现在来展示如何读取这些用户数据。

首先,你需要创建一个Firestore查询,指定你要从哪个集合读取数据。以下代码将创建一个查询对象,用于读取“users”集合中的所有文档:

CollectionReference usersRef = db.collection("users");
Query query = usersRef;

如果你只是想读取特定的文档,你可以在查询中添加一些限制。例如,以下代码将创建一个查询对象,用于读取年龄为 30 的用户的数据:

Query query = usersRef.whereEqualTo("age", 30);

现在,你已经创建了Firestore查询对象,接下来就是读取数据并处理结果。

Firestore使用异步查询,所以你必须在监听器中处理查询结果。以下代码展示了如何读取查询结果:

query.get()
    .addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            // 成功获取数据,task.getResult()返回一个QuerySnapshot对象
            QuerySnapshot querySnapshot = task.getResult();

            // 处理文档
            for (QueryDocumentSnapshot document : querySnapshot) {
                Log.d(TAG, document.getId() + " => " + document.getData());
            }
        } else {
            Log.w(TAG, "Error getting documents.", task.getException());
        }
    });

上面的代码中,使用get()方法执行查询操作,然后添加一个监听器来处理查询结果。如果查询成功,你可以从task.getResult()方法中获取一个QuerySnapshot对象,然后在循环中处理查询结果。如果查询失败,你可以从task.getException()方法中获取一个异常对象,然后进行错误处理。

我们来看一下在循环中如何获取查询结果。以下代码将演示如何获取每个用户的曾用名和年龄:

for (QueryDocumentSnapshot document : querySnapshot) {
    String name = document.getString("name");
    int age = document.getLong("age").intValue();

    Log.d(TAG, name + " is " + age + " years old.");
}

上面的代码中,你可以使用getString()getLong()方法获取数据字段。你可以使用文档字段的名称作为参数传递给这些方法。

步骤 3:完整示例代码

下面是一个完整的示例代码,展示了如何从Firestore中读取数据:

FirebaseFirestore db = FirebaseFirestore.getInstance();

CollectionReference usersRef = db.collection("users");
Query query = usersRef;

query.get()
    .addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            QuerySnapshot querySnapshot = task.getResult();

            for (QueryDocumentSnapshot document : querySnapshot) {
                String name = document.getString("name");
                int age = document.getLong("age").intValue();

                Log.d(TAG, name + " is " + age + " years old.");
            }
        } else {
            Log.w(TAG, "Error getting documents.", task.getException());
        }
    });

上面的代码将从名为“users”的集合中读取所有文档,并输出每个用户的名字和年龄。

总结

Firestore是一项非常有用的云数据库服务,可以帮助你存储、同步和查询数据。在Android应用中,可以使用Firestore库的依赖项来读取数据。在程序中构建查询并添加监听器来处理返回的数据。记得使用循环处理查询结果,从文档对象中读取需要的字段。