Firebase入门使用 01

news2024/12/28 23:09:36

官网

firebase.google.com

解决问题

firebase 帮助解决 数据库 和 API之间的问题
这样我们就可以 集中精力开创应用。

快速上手样例指南

https://github.com/firebase

提供的服务

其中80%用不到,下面是一些我们可以用到的服务。

Authentication:用户认证管理
多平台单点登录

CLoud Firestore: NoSql数据库服务
移动端多实用nosql服务

Realtime Database:实时存储并同步数据(旧版)

Storage:云存储服务(文件,图片等)
文件存储功能,帮助存储 用户上传的图片和视频,类似AWS中的S3

Hosting:网站托管服务(静态,动态)
上传网页,仅仅是HTML的静态网页服务

Functions:服务区托管代码服务
用于响应用户的输入

Machine Learning:机器学习产品(Beta)
语言,图片识别等

价格

前期使用

  1. spark方案
    免费
    完全够用

  2. blaze方案
    收费

客户端支持

i0S/Android
WebApp (React, Vue, Angular) Node.js
Python
Go
C++
Unity

安装Firebase命令行工具

sudo npm install -g firebase-tools

安装Firebase Admin SDK

Firebase Admin SDK

登录firebase tool工具

firebase login

在这里插入图片描述
列举当前工程

firebase projects:list

在这里插入图片描述

创建项目

进入控制台

https://firebase.google.com/?hl=zh-cn

在这里插入图片描述

在这里插入图片描述
给项目 起个名字
在这里插入图片描述
在这里插入图片描述
在analytics 建一个账号,然后再在里面建多个媒体
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

先建一个云端数据库
在里面加入数据
再用管理包链接数据库
显示数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面是创建好的数据库
在这里插入图片描述

插入数据
在这里插入图片描述

在这里插入图片描述

回到项目设置
在这里插入图片描述
改个名字
在这里插入图片描述
找到 客户端访问firebase的私钥并下载
在这里插入图片描述

打开 mac 终端 terminal

创建文件夹并进入

mkdir myfirebase
cd myfirebase

初始化目录

npm init -y

为nodeJS安装firebase管理包

npm install firebase-admin --save

创建 一个js文件
尝试引用firebase数据库中数据

创建文件

nano main.js

在里面输入

var admin = require('firebase-admin');

然后保存退出

运行文件

node main.js

打开之前下载下来的私钥文件
将其 移动到 当前文件夹里面
下面是因为 mac默认下载但download
当前路径默认在 firebase文件夹内的情况下
使用cp命令 直接 拷贝

在这里插入图片描述

打开 js文件
修改 秘钥文件所处的路径
在这里插入图片描述

// 把私钥读进来
// 用firebase管理包进行初始化
var admin = require('firebase-admin');
var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");
admin.initializeApp({
    creadential: admin.credential.cert(serviceAccount),
});

var defaultProjectManagement = admin.projectManagement();
console.log(defaultProjectManagement)

保存然后再次在终端执行

node main.js

在这里插入图片描述
说明连接上了,并且显示了project的相关内容

提取之前创建的数据

// 把私钥读进来
// 用firebase管理包进行初始化

var admin = require("firebase-admin");

var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});


// var defaultProjectManagement = admin.projectManagement();
// console.log(defaultProjectManagement)

let db = admin.firestore();
db.collection('users').get()
    .then((snapshot) => {
        snapshot.forEach((doc) => {
            console.log(doc.id,'=>',doc.data());
        });
    })
    .catch((err) => {
        console.log('Error getting documents', err);
    });

在这里插入图片描述

Hosting 主机托管服务

快速建立一个网站
使用主机托管服务 托管一个网站
在这里插入图片描述
创建自己的web先
等下再回去hosting
在这里插入图片描述
随便搞个名字

在本地电脑上,创建文件夹,并在文件夹内完成firebase的web初始化

mkdir myweb
cd myweb
npm init -y
firebase init

选择自己想要的相应的配置
空格 表示 选中
enter 表示 确认
下面注意选择了 两个绿色的
一个hosting 主机托管服务
一个emulators 本地模拟服务
在这里插入图片描述
在这里插入图片描述

这里public 作为 主目录
以后 这个public 就会向 firebase 上传

理解: 这个public 就是 以后 web的 根目录。

在这里插入图片描述
配置一个本地模拟器
在这里插入图片描述

下面狂敲enter 都默认就可以
在这里插入图片描述
配置完成后,检查目录,发现生成两个配置文件
在这里插入图片描述
一个是 工程文件
一个是 工程描述文件

使用cat查看内容
firebaserc
在这里插入图片描述
在这里插入图片描述
主机服务 和 模拟器
模拟器是为了 本地模拟firebase服务器环境,调试

进入public

cd public

里面有 默认生成的 index.html文件
我们不用,给其更名
在这里插入图片描述
我们自己建一个新的
在这里插入图片描述
后面需要其他服务
都在analytics下面增加
这些服务的js文件在
https://firebase.google.com/docs/web/setup#avaiLable-Libraries
查询
在这里插入图片描述

在当前目录创建index.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Hello Firebase from Koma!</title>
    </head>
    <body>
        <h1>Hello Firebase from Koma!</h1>
        <script src="/__/firebase/8.2.2/firebase-app.js"></script>
        <script src="/__/firebase/8.2.2/firebase-analytics.js"></script>
        <script src="/__/firebase/init.js"></script>
        <script>
            let analytics = Firebase.analytics();
            // 记载一个页面事件
            analytics.logEvent('homepage_content', {
                content_type:'homepage',
                content_id:'P1',
                items: [{ name: 'homepage/index' }]
            });
        </script>
    </body>
</html>

回到上一级

cd ..

在本地run一下网站

firebase serve --only hosting --project=default

在这里插入图片描述
网页访问

在这里插入图片描述
运行成功后,部署上线

首先在键盘上按 control + C 退出本地运行服务
然后部署

firebase deploy --project=default

这里如果有多个 project的话,需要告诉firebase,我们默认要部署的projectID是哪一个
首先,通过

firebase projects:list

找到目前拥有的所有project
然后通过

firebase <my command> --project=<my project ID>

实际操作如下图所示,设置自己要默认部署的project
然后再执行

firebase deploy --project=default

在这里插入图片描述

在这里插入图片描述

使用数据库服务 Cloud Firestore

具体内容
建立noSql数据库
通过Nod.js接口访问数据库

重复前面 创建项目部分
创建文件夹
初始化

npm init -y
npm install firebase-admin --save

创建main.js
文件

增删查改
使用node.JS写的
自己分开 注释,理解
不要直接run

// 把私钥读进来
// 用firebase管理包进行初始化

var admin = require("firebase-admin");

var serviceAccount = require("./fir-2aa30-firebase-adminsdk-qsuhb-e553450ef4.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});


// var defaultProjectManagement = admin.projectManagement();
// console.log(defaultProjectManagement)
// 数据库对象
let db = admin.firestore();

// 服务器时间戳
const FieldValue = admin.firestore.FieldValue;


// // 1. 下面是增加数据
// // 这里是调用函数
// addData()
// // 添加数据

// // 这里是定义函数
// async function addData() {
//     // 循环 5次, 往 users 文档中 添加5条数据
//     for (i = 1; i <= 5; i++) {
//         const res = await db.collection('users').add({
//             name: '用户' + i,
//             sex: i % 2 == 0 ? '男' : '女',
//             regdate: FieldValue.serverTimestamp()
//         });
//         console.log('Added document with ID: ', res.id);
//     }
// }

// // 2. 下面是读取数据
// getData()
// async function getData() {
//     // 把所有数据都读出来
//     await db.collection('users').get()
//     .then((snapshot) => { // 循环 取到 每个文档id
//         snapshot.forEach((doc) => {
//             console.log(doc.id, '=>', doc.data()); // 每个文档使用data方法取到所有内容
//         });
//     })
//     .catch((err) => {
//         console.log("Error getting documents", err);
//     });
// }


// 3. 更新数据内容
// upData()

// async function upData(){
// // doc后面是写数据的id,需要在firebase数据库中查看,每个人不一样,不要抄我的,下面删除类似
//     const userRef = db.collection('users').doc('5ER15LHG0fOrh5pztxVj');
//     const res = await userRef.update({
//         age: 999,
//         update: FieldValue.serverTimestamp()
//     });
// }

// 4. 删除数据
delData()
async function delData() {
    let deleteDoc = db.collection('users').doc('5ER15LHG0fOrh5pztxVj').delete();
    console.log(deleteDoc);
}

// db.collection('users').get()
//     .then((snapshot) => {
//         snapshot.forEach((doc) => {
//             console.log(doc.id,'=>',doc.data());
//         });
//     })
//     .catch((err) => {
//         console.log('Error getting documents', err);
//     });

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt安装与使用经验分享;无.pro文件;无QTextCodec file;Qt小试;界面居中;无缝;更换Qt图标;更换Qt标题。

1、切换安装下载源 《Qt安装教程》先推荐一篇安装文章&#xff1a;《Qt安装教程》 Qt 5.15 之后已经不提供离线安装包了&#xff0c;就是那个 3.7G 的 exe 安装包。请看官方说明&#xff0c;所以只能用在线安装包。 1&#xff0c;下载在线安装包 QT 在线安装包链接&#xff…

基于WSL2和Clion搭建Win下C开发环境

系列文章目录 一、基于WSL2和Clion搭建Win下C开发环境 二、make、makeFile、CMake、CMakeLists的使用 三、全面、详细、通俗易懂的C语言语法和标准库 文章目录系列文章目录前言WSL2安装WSL常用命令VSCode连接WSLroot密码以systemd启动配置sshClion结语前言 Win下C语言开发环境…

zabbix-API对接实录:关键基础设施数据清洗和封装函数(php数组函数、数据清洗、数据结构化)

系列文章目录 Zabbix监控系统PHP-API开发测试实录Zabbix监控系统开发(2):JSON多维数组筛选字段是否包含字符串的解决方案Zabbix物联网可视化开发文档 文章目录系列文章目录前言一、zabbix-API数据爬虫二、主机ID封装接口1.封装API接口2.数据处理封装函数三、组ID封装接口1.格式…

汽车 Automotive > T-BOX GNSS高精定位测试相关知识

参考&#xff1a;https://en.wikipedia.org/wiki/Global_Positioning_SystemGPS和GNSS的关系GPS&#xff08;Global Positioning System&#xff09;&#xff0c;全球定位系统是美国军民两用的导航定位卫星系统&#xff0c;GPS包含双频信号&#xff0c;频点L1、L2和L5GNSS&…

RecyclerView ViewType二级

实现效果描述&#xff1a; 1、点击recyclerview中item&#xff0c;列表下方出现其他样式的item&#xff0c;作为子item&#xff0c;如下所示 所需要的java文件和xml文件有&#xff1a; 1、创建FoldAdapteradapter, 在FoldAdapter中&#xff0c;定义两种不同的类型&#xff…

Allegro如何将Waived掉的DRC显示或隐藏操作指导

Allegro如何将Waived掉的DRC显示或隐藏操作指导 在用Allegro做PCB设计的时候,如果遇到正常的DRC,可以用Waive的命令将DRC不显示,如下图 当DRC被Waive掉的时候,如何将DRC再次显示出来。类似下图效果 具体操作如下 点击Display

linux下strace的使用

strace是一款用于跟踪Linux系统调用和信号的工具&#xff0c;可以帮助开发者排除程序运行时的问题。 具体来说&#xff0c;strace可以跟踪一个程序执行时所涉及到的系统调用&#xff0c;包括读写文件、网络通信、进程管理、内存管理等操作&#xff0c;通过分析程序运行过程中发…

JavaWeb--JSP案例

JSP案例8 案例8.1 环境准备8.1.1 创建工程8.1.2 创建包8.1.3 创建表8.1.4 创建实体类8.1.5 准备mybatis环境8.2 查询所有8.2.1 编写BrandMapper8.2.2 编写工具类8.2.3 编写BrandService8.2.4 编写Servlet8.2.5 编写brand.jsp页面8.2.6 测试8.3 添加8.3.1 编写BrandMapper方法8.…

ARM uboot 的移植0-从三星官方 uboot 开始移植的准备工作

一、移植前的准备工作 1、三星移植过的uboot源代码准备 (1) 三星对于 S5PV210 的官方开发板为 SMDKV210&#xff0c;对应的移植过的 uboot 是&#xff1a;三星官方为210移植过的uboot和kernel/android_uboot_smdkv210.tar.bz2。 (2) 这个源代码网上是下载不到的&#xff0c;…

Leetcode.2397 被列覆盖的最多行数

题目链接 Leetcode.2397 被列覆盖的最多行数 Rating &#xff1a; 1719 题目描述 给你一个下标从 0 开始的 m x n二进制矩阵 mat和一个整数 cols&#xff0c;表示你需要选出的列数。 如果一行中&#xff0c;所有的 1 都被你选中的列所覆盖&#xff0c;那么我们称这一行 被覆盖…

RabbitMQ的使用以及整合到SpringBoot中

RabbitMQ的使用以及整合到SpringBoot中 一、比较&#xff1a; (1)、传统请求服务器&#xff1a; (2)、通过MQ去操作数据库&#xff1a; 通过MQ去操作数据库&#xff0c;从而达到削峰的效果&#xff1b; 问题现象&#xff1a; (1)、海量数据&#xff1b; (2)、高并发&#…

Python如何获取弹幕?给你介绍两种方式

前言 弹幕可以给观众一种“实时互动”的错觉&#xff0c;虽然不同弹幕的发送时间有所区别&#xff0c;但是其只会在视频中特定的一个时间点出现&#xff0c;因此在相同时刻发送的弹幕基本上也具有相同的主题&#xff0c;在参与评论时就会有与其他观众同时评论的错觉。 在国内…

【SQLAlchemy】第二篇——连接失效及连接池

一、背景 为了节约资源&#xff0c;MySQL会对建立的连接进行监控&#xff0c;当某些连接处于不活跃状态的时间超过一个阈值时&#xff0c;则关闭它们。 用户可以执行show variables like %wait_timeout%;来查看这个阈值&#xff1a; 可以看到&#xff0c;在默认的情况下&…

Multi-modal Graph Contrastive Learning for Micro-video Recommendation

模型总览如下&#xff1a; 解决问题&#xff1a;同种重要性对待每种模态&#xff0c;可能使得得到的特征表示次优&#xff0c;例如过度强调学习到的表示中的特定模态。以MMGCN为例&#xff0c;下图为MMGCN模型总览。 如上图所示MMGCN在每种模态上构建用户-物品二部图&#xff0…

【云原生】Gateway网关选型

网关一般分为流量网关和业务网关&#xff0c;流量网关负责接入所有的流量&#xff0c;并分发给不同的子系统&#xff0c;那在具体的业务接入之前&#xff0c;还有一层业务网关。流量网关提供全局性的、与后端业务应用无关的策略&#xff0c;例如 HTTPS证书卸载、Web防火墙、全局…

[vue]vue3.x 组合式API不同写法

[vue]vue3.x 组合式API不同写法改进后组合API实际实际使用中的疑问组件名称问题两种写法的优缺点对比优点缺点组合式API&#xff0c;采用了更加灵活的方式,官网推荐的语法糖&#xff0c;但仅限于比较简单的单文件&#xff0c;作为尝试 改进后组合API实际实际使用中的疑问 改进…

4-2 Linux进程和内存概念

文章目录前言进程状态进程优先级内存模型进程内存关系前言 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说&#xff0c;Linux系统会在进程之间共享程序代码和系统函数库&#xff0c;所以在任何时刻内存中都只有代码的一份拷贝。 进程状态…

36_2 On Chip Bus —— AXI总线介绍

目录 1.AXI总线介绍&#xff08;读2写3&#xff09; 1.1流量控制 1.2 AXI signals 信号线 1.3重点信号线的介绍 1.4原子操作——让读改写一套操作 永远是一个master对一个slave 1.5AXI BURST Boundary——一个burst不能跨4k boundary&#xff0c;master要保证 1.6读/写通…

k8s中的PV和PVS

前言&#xff1a;容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重启它&#xff0c;但是容器中的文件将丢失——容器以干净的状态&#xff08;镜像最初的状态&#xff09;…

Python 算法交易实验51 Step2 Signals 信号生成

说明 不可不读书 先从经典的一些超简单信号开始 使用移动平均指标SMA(算术&#xff09; 给出了信号的产生方法&#xff0c;还有一些测算结果&#xff0c;反正看起来都是盈利的 首先使用离线方法实验一组结果&#xff0c;然后就使用ADBS来进行类似的处理。 内容 1 原理分析…