📌  相关文章
📜  获取集合中的所有文档 firestore flutter - TypeScript (1)

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

获取集合中的所有文档 - Firestore & Flutter & TypeScript

Firestore是一个快速,可伸缩的NoSQL数据库,可以用于构建移动应用程序和Web应用程序。Flutter是一个跨平台移动应用程序框架,可用于快速开发高质量的本地用户界面。TypeScript是JavaScript的一个超集,提供了更好的类型安全和代码可读性。

在这篇文章中,我们将介绍如何获取Firestore集合中的所有文档,并使用Flutter编写一个简单的应用程序来显示这些文档。我们还将使用TypeScript来提高代码质量和可读性。

以下是我们将要涉及的主要步骤:

  1. 创建Firestore实例
  2. 获取集合引用
  3. 获取所有文档
  4. 将数据显示在Flutter应用程序中
  5. 使用TypeScript提高代码质量和可读性
1. 创建Firestore实例

要连接Firestore数据库,我们需要创建一个Firestore实例并对其进行身份验证。我们可以使用Firebase库中的“FirebaseApp”类创建一个默认应用程序实例,并使用该实例创建一个Firestore实例。在Flutter应用程序中,我们需要将Firebase配置文件下载到本地并将其添加到我们的项目中。

import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_SENDER_ID",
  appId: "YOUR_APP_ID",
};

const app = initializeApp(firebaseConfig);
const firestore = getFirestore(app);

在上面的代码中,我们导入了Firebase库中的“initializeApp”和“getFirestore”函数,然后使用我们的Firebase配置文件创建了一个default应用程序实例,并使用它创建了一个Firestore实例。请记住将Firebase配置文件替换为您自己的配置信息。

2. 获取集合引用

要获取Firestore集合中的所有文档,我们需要先获取对该集合的引用。我们可以使用Firestore实例的“collection”方法来获取集合引用。

const collectionRef = collection(firestore, "myCollection");

在上面的代码中,我们使用Firestore实例和集合名称“myCollection”创建了一个集合引用。请记住将集合名称更改为您自己的集合。

3. 获取所有文档

要获取Firestore集合中的所有文档,我们需要使用集合引用的“get”方法。这将返回一个“QuerySnapshot”对象,该对象包含当前集合中的所有文档。

const querySnapshot = await getDocs(collectionRef);

在上面的代码中,我们使用集合引用的“getDocs”方法获取“QuerySnapshot”对象。我们使用“await”关键字来等待异步操作完成后再继续执行。

4. 将数据显示在Flutter应用程序中

在Flutter应用程序中,我们可以使用Firebaase需要引入的Flutter包,在页面上显示Firestore集合中的所有文档。

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Firestore Collection Demo"),
      ),
      body: StreamBuilder(
        stream: FirebaseFirestore.instance.collection('myCollection').snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return CircularProgressIndicator();
          }
          return ListView.builder(
            itemCount: snapshot.data.docs.length,
            itemBuilder: (context, index) {
              return ListTile(
                title: Text(snapshot.data.docs[index]['title']),
                subtitle: Text(snapshot.data.docs[index]['description']),
              );
            },
          );
        },
      ),
    );
  }
}

在上面的代码中,我们导入了“cloud_firestore”包,使用它来获取Firestore集合中的所有文档。我们使用一个“StreamBuilder”小部件来监视Firestore集合中的数据更改,并在Flutter应用程序中显示所有文档。

5. 使用TypeScript提高代码质量和可读性

TypeScript是一种静态类型的超集,可以帮助我们提高代码质量和可读性。我们可以使用TypeScript来引入类型定义并确保我们的代码符合类型签名。

interface DocumentData {
  title: string;
  description: string;
}

interface QueryDocumentSnapshot {
  data: () => DocumentData;
}

interface QuerySnapshot {
  docs: QueryDocumentSnapshot[];
}

const querySnapshot: QuerySnapshot = await getDocs(collectionRef);

const documents = querySnapshot.docs.map((doc) => doc.data());

在上面的代码中,我们定义了两个接口,“DocumentData”和“QueryDocumentSnapshot”,来定义我们的文档数据和查询快照数据类型。然后我们使用这些接口来确保我们的代码符合类型签名。

在下一个步骤中,我们将查询快照“QuerySnapshot”转换为文档数组。

在这篇文章中,我们介绍了如何获取Firestore集合中的所有文档,并使用Flutter编写了一个简单的应用程序来显示这些文档。我们还使用TypeScript来提高代码质量和可读性。