热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在ReactJS中使用Firestore数据库?

如何在ReactJS中使用Firestore数据库?原文

如何在 ReactJS 中使用 Firestore 数据库?

原文:https://www . geeksforgeeks . org/how-用法-firestore-database-in-reactjs/

Firebase 是一款谷歌产品,可以帮助我们轻松构建、管理和开发我们的应用程序。在本文中,我们将看到如何使用 firebase firestore 作为后端,并在我们的演示 react 项目中使用 firebase 提供的 G-auth。当您设计像 iOS 或 Android 应用程序或 web 应用程序这样的移动应用程序时,数据库是一个大问题,这并不是因为它很难设计,当然设计起来有点棘手,有时它会消耗大量带宽数据库和应用程序前端之间的流量是一个大问题除此之外,主机页面也是一个问题, 想象一下,如果你的应用程序有照片共享功能,你想访问那里的所有照片,那么现在维护所有这些功能并不容易。此外,管理自己的身份验证系统也很棘手,因为每个人都需要来自脸书的身份验证,也许推特,也许谷歌,甚至一个简单的登录系统都不容易从头设计。 现在火基地来了,火基地给你一个完整的解决方案,关于如何把东西拿下来。现在这是一个非常好的完整后端解决方案,您可以使用。现在有了 firebase,您可以进行各种身份验证,最常见的是用户名、电子邮件和密码,但是有很多不同的登录方式,下面是所有可能方式的快照。

firebase 还解决了数据库的一个非常好的问题,它为您提供了一个实时数据库,在本文中,我们将看到如何将 firebase 用于数据库。

创建反应应用程序并安装模块:

步骤 1: 使用以下命令创建一个反应应用程序:

npx create-react-app foldername

步骤 2: 创建项目文件夹(即文件夹名)后,使用以下命令移动到该文件夹中:

cd foldername

步骤 3: 创建 ReactJS 应用程序后,使用以下命令安装所需的*模块:*

**npm i firebase**

**项目结构:如下图。****

****

项目结构****

**运行应用程序的步骤:从项目的根目录使用以下命令运行应用程序:****

**npm start**

*让我们首先创建两个输入字段,即名称和密码以及一个提交按钮。*

*App.js*

**import React, { useState } from "react";
import "./App.css";
function App() {
  const [customerName, setCustomerName] = useState("");
  const [customerPassword, setCustomerPassword] = useState("");
  return (
    


      

                  type="text"
          placeholder="Name"
          value={customerName}
          OnChange={(e) => setCustomerName(e.target.value)}
        />
                  type="text"
          placeholder="Password"
          value={customerPassword}
          OnChange={(e) => setCustomerPassword(e.target.value)}
        />
        
      

    

  );
}
export default App;**

*App.css*

**.App {
  text-align: center;
  height: 100vh;
  display: grid;
  place-items: center;
}
.App__form {
  display: flex;
  flex-direction: column;
}
input {
  padding: 7px 11px;
  border-radius: 3px;
  border: none;
  border-bottom: 1px solid gray;
  margin: 20px;
  outline: none;
}
button {
  display: inline-block;
  margin-right: auto;
  margin-left: auto;
  padding: 7px 12px;
  border: none;
  border-radius: 4px;
}**

**现在我们将创建火基地项目并创建 火基地配置文件。****

**创建 火基地项目的步骤:****

**第一步:登录火基仪表盘,点击添加项目卡。****

**第二步:输入你的项目名称点击继续。****

**步骤 3: 在配置谷歌分析中,选择 Firebase 的默认帐户,然后单击创建项目。****

**

**第四步:等待 firebase 创建你的项目。****

**

**第 5 步:项目创建后,转到如图所示的网络图标。****

**

**第六步:给应用取昵称,选择 firebase hosting 复选框如果你想用 firebase 托管你的应用,注册你的应用。****

**

**第 7 步:如果尚未安装 Firebase CLI,只需在您的 VScode 终端上使用下面给出的命令进行安装****

**npm install -g firebase-tools**

**

**步骤 8: 完成后,使用下面给出的命令,使用命令行或 VSCode 中的终端登录到您的 firebase。****

**firebase login**

**第 9 步:点击继续控制台。****

**第 10 步:下一步进入你的应用点击设置图标,在底部选择配置选项复制配置数据。转到您的本地项目,在 src 文件夹中创建一个名为 firebase.js 的文件,并粘贴配置数据以及其中的几行,如下所示。****

**

*火库. js*

**import firebase from "firebase";
const firebaseCOnfig= {
  apiKey: "AIzaSyATKyTSJVN7-Zx60WQ66kkHo3nBhuMhYDs",
  authDomain: "meteor-3fd94.firebaseapp.com",
  projectId: "meteor-3fd94",
  storageBucket: "meteor-3fd94.appspot.com",
  messagingSenderId: "391620415322",
  appId: "1:391620415322:web:6848292646d9e91e6e6d63",
  measurementId: "G-69J20TCH7X",
};
const firebaseApp = firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();
export default db;**

**现在我们已经准备好了配置文件,我们只需要为 CRUD 操作添加代码:****

**1。创建集合:要创建集合,我们只需使用我们在上面的 firebase.js 中创建的 db 对象。我们只需将它导入到我们的文件中,并使用 collection 方法来定位集合,在创建之后,我们的数据将存储在该集合中。如果您的集合嵌套在其他集合中,您将不得不像这样编写它, db.collection( <父集合>)。doc( )。收藏(<子-收藏>)以此类推。现在一旦我们在我们的集合中,我们只是简单地添加我们的数据作为一个对象。****

*App.js***

***import React, { useState } from "react";
import "./App.css";
import db from "./firebase";
function App() {
  const [customerName, setCustomerName] = useState("");
  const [customerPassword, setCustomerPassword] = useState("");
  const submit = (e) => {
    e.preventDefault();
    db.collection("customersData").add({
      name: customerName,
      password: customerPassword,
    });
    setCustomerName("");
    setCustomerPassword("");
  };
  return (
    


      

                  type="text"
          placeholder="Name"
          value={customerName}
          OnChange={(e) => setCustomerName(e.target.value)}
        />
                  type="text"
          placeholder="Password"
          value={customerPassword}
          OnChange={(e) => setCustomerPassword(e.target.value)}
        />
        
      

    

  );
}
export default App;***

*现在我们将测试我们的代码是否工作。***

****

*一旦我们看到这一页,那么我们都准备好了。只需转到本地主机,输入详细信息并按提交,然后再次打开 Firebase 中的 Firestore 数据库,您将看到如下所示的内容:***

****

*所以我们可以看到如上所示的数据***

*2。读取操作:现在读取数据,初始过程相同,即导入数据库对象。不,我们去存储我们想要读取的数据的集合,然后我们使用 onSnapshot 方法,顾名思义,每当数据库中发生任何更改时,它都会简单地拍摄快照。这个函数负责我们使用 firebase 时获得的实时感觉。***

*App.js***

***import React, { useState, useEffect } from "react";
import "./App.css";
import db from "./firebase";
function App() {
  const [customerName, setCustomerName] = useState("");
  const [customerPassword, setCustomerPassword] = useState("");
  const [customersData, setCustomersData] = useState([]);
  useEffect(() => {
    db.collection("customersData").onSnapshot((snapshot) => {
      setCustomersData(
        snapshot.docs.map((doc) => ({
          id: doc.id,
          data: doc.data(),
        }))
      );
    });
    console.log({ customersData });
  }, []);
  const submit = (e) => {
    e.preventDefault();
    db.collection("customersData").add({
      name: customerName,
      password: customerPassword,
    });
    setCustomerName("");
    setCustomerPassword("");
  };
  return (
    


      

                  type="text"
          placeholder="Name"
          value={customerName}
          OnChange={(e) => setCustomerName(e.target.value)}
        />
                  type="text"
          placeholder="Password"
          value={customerPassword}
          OnChange={(e) => setCustomerPassword(e.target.value)}
        />
        
      

      

        
          
            
            
          
          {customersData?.map(({ id, data }) => (
            
              
              
            
          ))}
        
NAMEPASSWORD
{data.name}{data.password}

      

    

  );
}
export default App;***

*运行应用程序的步骤:从项目的根目录使用以下命令运行应用程序:***

***npm start***

*输出:现在打开浏览器,转到http://localhost:3000/,会看到如下输出:***

****

*3。更新操作:我们先来看一个应该更新的按钮和应该出现的字段。现在我们从 firebase.js 导入 db 对象后,我们只需转到存储要更新的数据的集合,然后我们指定需要更新的文档,因为一个集合有许多文档,所以我们必须指定要更新什么文档,然后我们只需使用更新方法并传递更新的对象。***

*App.js***

***import React, { useState, useEffect } from "react";
import "./App.css";
import db from "./firebase";
function App() {
  const [customerName, setCustomerName] = useState("");
  const [customerPassword, setCustomerPassword] = useState("");
  const [customersData, setCustomersData] = useState([]);
  const [updatedCustomerName, setUpdatedCustomerName] = useState("");
  const [updatedCustomerPassword, setUpdatedCustomerPassword] = useState("");
  const [dataIdToBeUpdated, setDataIdToBeUpdated] = useState("");
  useEffect(() => {
    db.collection("customersData").onSnapshot((snapshot) => {
      setCustomersData(
        snapshot.docs.map((doc) => ({
          id: doc.id,
          data: doc.data(),
        }))
      );
    });
  }, []);
  const submit = (e) => {
    e.preventDefault();
    db.collection("customersData").add({
      name: customerName,
      password: customerPassword,
    });
    setCustomerName("");
    setCustomerPassword("");
  };
  const updateData = (e) => {
    e.preventDefault();
    db.collection("customersData").doc(dataIdToBeUpdated).update({
      name: updatedCustomerName,
      password: updatedCustomerPassword,
    });
    setUpdatedCustomerPassword("");
    setUpdatedCustomerName("");
    setDataIdToBeUpdated("");
  };
  return (
    


      {!dataIdToBeUpdated ? (
        

                      type="text"
            placeholder="Name"
            value={customerName}
            OnChange={(e) => setCustomerName(e.target.value)}
          />
                      type="text"
            placeholder="Password"
            value={customerPassword}
            OnChange={(e) => setCustomerPassword(e.target.value)}
          />
          
        

      ) : (
        

                      type="text"
            placeholder="Name"
            value={updatedCustomerName}
            OnChange={(e) => setUpdatedCustomerName(e.target.value)}
          />
                      type="text"
            placeholder="Password"
            value={updatedCustomerPassword}
            OnChange={(e) => setUpdatedCustomerPassword(e.target.value)}
          />
          
        

      )}
      

        
          
            
            
            
          
          {customersData?.map(({ id, data }) => (
            
              
              
              
            
          ))}
        
NAMEPASSWORDUpdate
{data.name}{data.password}
                                  OnClick={() => {
                    setDataIdToBeUpdated(id);
                    setUpdatedCustomerPassword(data.password);
                    setUpdatedCustomerName(data.name);
                  }}
                >
                  Update
                
              

      

    

  );
}
export default App;***

*运行应用程序的步骤:从项目的根目录使用以下命令运行应用程序:***

***npm start***

*输出:现在打开浏览器,转到http://localhost:3000/,会看到如下输出。更新数据后,您可以在 firebase 仪表板中查看数据是否更新。***

****

*4。删除操作:从同样的事情开始,我们在我们的文件中导入 db 对象,然后我们简单地转到存储要删除的数据的集合,然后我们指定我们需要删除的文档,因为一个集合有许多文档,所以我们必须指定要删除什么文档,然后我们简单地调用删除方法。***

*App.js***

***import React, { useState, useEffect } from "react";
import "./App.css";
import db from "./firebase";
function App() {
  const [customerName, setCustomerName] = useState("");
  const [customerPassword, setCustomerPassword] = useState("");
  const [customersData, setCustomersData] = useState([]);
  const [updatedCustomerName, setUpdatedCustomerName] = useState("");
  const [updatedCustomerPassword, setUpdatedCustomerPassword] = useState("");
  const [dataIdToBeUpdated, setDataIdToBeUpdated] = useState("");
  useEffect(() => {
    db.collection("customersData").onSnapshot((snapshot) => {
      setCustomersData(
        snapshot.docs.map((doc) => ({
          id: doc.id,
          data: doc.data(),
        }))
      );
    });
  }, []);
  const submit = (e) => {
    e.preventDefault();
    db.collection("customersData").add({
      name: customerName,
      password: customerPassword,
    });
    setCustomerName("");
    setCustomerPassword("");
  };
  const updateData = (e) => {
    e.preventDefault();
    db.collection("customersData").doc(dataIdToBeUpdated).update({
      name: updatedCustomerName,
      password: updatedCustomerPassword,
    });
    setUpdatedCustomerPassword("");
    setUpdatedCustomerName("");
    setDataIdToBeUpdated("");
  };
  const deleteData = (id) => {
    db.collection("customersData").doc(id).delete();
  };
  return (
    


      {!dataIdToBeUpdated ? (
        

                      type="text"
            placeholder="Name"
            value={customerName}
            OnChange={(e) => setCustomerName(e.target.value)}
          />
                      type="text"
            placeholder="Password"
            value={customerPassword}
            OnChange={(e) => setCustomerPassword(e.target.value)}
          />
          
        

      ) : (
        

                      type="text"
            placeholder="Name"
            value={updatedCustomerName}
            OnChange={(e) => setUpdatedCustomerName(e.target.value)}
          />
                      type="text"
            placeholder="Password"
            value={updatedCustomerPassword}
            OnChange={(e) => setUpdatedCustomerPassword(e.target.value)}
          />
          
        

      )}
      

        
          
            
            
            
            
          
          {customersData?.map(({ id, data }) => (
            
              
              
              
              
            
          ))}
        
NAMEPASSWORDUpdateDelete
{data.name}{data.password}
                                  OnClick={() => {
                    setDataIdToBeUpdated(id);
                    setUpdatedCustomerPassword(data.password);
                    setUpdatedCustomerName(data.name);
                  }}
                >
                  Update
                
              

                                  OnClick={() => {
                    deleteData(id);
                  }}
                >
                  Delete
                
              

      

    

  );
}
export default App;***

*运行应用程序的步骤:从项目的根目录使用以下命令运行应用程序:***

***npm start***

*输出:现在打开浏览器,转到http://localhost:3000/,会看到如下输出。删除数据后,您可以在 firebase 仪表板中检查数据是否被删除。***

****


推荐阅读
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
author-avatar
zc43pml
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有