Firebase 简介以及 VS code 无法访问的问题
ztj100 2024-12-27 17:52 18 浏览 0 评论
最近在开发项目中有使用到 firebase ,在这里记录一下开发心得。
firebase 是谷歌推出的云产品,官方对其的定义是:Firebase是谷歌的移动平台,可以帮助您快速开发高质量的应用程序,并发展您的业务。
我在使用过程中的理解是:Firebase 是一个谷歌推出的 “低后端代码“ 开发平台,帮助开发者减少后端代码编写量。
firebase 主要包含 Authentication、Firestore、 Realtime Database、storage、hosting、functions 、plugins以及机器学习等模块
Authentication
大多数应用都需要了解用户的身份。了解用户的身份可以让应用将用户数据安全地保存在云端,并在用户的所有设备上为其提供一致的个性化体验。
Firebase 身份验证提供了后端服务、易用的 SDK 以及现成的界面库,以便向您的应用验证用户的身份。该功能支持通过密码、电话号码、主流联合身份提供商服务(如 Google、Facebook 和 Twitter 等)进行身份验证。
说简单点就是一套集成了手机号登录、邮箱登录、第三方登录的无需后端代码即可调用的 sdk
Firestore
Cloud Firestore 是一种灵活且可扩缩的数据库(类似于键值型存储数据库),适用于在 Firebase 和 Google Cloud Platform 上进行移动、Web 和服务器开发。与 Firebase Realtime Database 一样,它可以通过实时侦听器使您的数据在各个客户端应用之间保持同步,并为移动和 Web 应用提供离线支持,以帮助您构建无论网络延迟时间或互联网连接状况如何都能快速响应的应用。Cloud Firestore 还提供与其他 Firebase 和 Google Cloud 产品(包括 Cloud Functions)的无缝集成。
Realtime Database
Firebase 实时数据库允许从客户端代码中直接安全地访问数据库,得益于此,您能够构建功能丰富的协作式应用。数据会永久性地保留在客户端,即使处于离线状态,实时事件仍会继续触发,给最终用户提供良好的即时性体验。当设备重新连接到网络时,实时数据库会将本地数据变化与客户端离线期间发生的远程更新同步,自动合并任何不一致的数据。
实时数据库提供灵活的基于表达式的规则语言(称为“Firebase 实时数据库安全规则”),可以定义您的数据结构以及何时可以读取或写入数据。当与 Firebase 身份验证集成时,开发者可以定义什么人可以访问什么数据以及如何访问数据。
实时数据库是一种 NoSQL 数据库,因此具有不同于关系型数据库的优化方向和功能特点。Realtime Database API 的设计只支持可以快速执行的操作。这使您能够构建实时性更强的体验,即使服务数百万的用户,响应速度也丝毫不受影响。因此,请务必认真考虑用户需要如何访问您的数据,以便相应地设计数据结构。
Stroage
Cloud Storage 可存储图像、视频和音频等文件,以及其他用户生成的内容。可以理解为 OSS
Hosting
Firebase 托管可托管您的网站的 HTML、CSS 和 JavaScript 资源以及由开发者提供的其他资源(如图形、字体和图标)。可以理解为虚拟主机
Plugins
插件模块主要是提供一些 应用程序中常用的功能,如 发送邮件、短信验证码等等
Functions
云函数,主要是执行一些需要后端处理的逻辑代码,托管在 Google 服务器,在您编写并部署函数后,Google 的服务器会立即开始管理函数。您可以使用 HTTP 请求直接触发函数,或者,如果触发的是后台函数,Google 的服务器会侦听事件并在函数被触发时运行函数。
Google 会随着负载的增加或减少而做出响应,迅速调节运行函数所需的虚拟服务器实例的数量。每个函数都拥有自己的配置,会在自己的环境中单独运行。
开发
实际开发过程中使用较多的是数据库和云函数模块,可以根据对应的开发文档引入 sdk,调用即可,官方文档
主要记录
国内开发者可能无法直接访问谷歌服务,配置 VPN 后,浏览器可以访问,通过 vs code 访问 firebase API 时会出现超时的问题,最可能出现在部署云函数时操作超时。
主要解决方法如下(适用于 nodejs 项目):
寻找 项目目录内 node_modules 下 @request/request.js 查找并替换如下代码片段
if (!self.hasOwnProperty('proxy')) {
//self.proxy = getProxyFromURI(self.uri)
self.proxy = '127.0.0.1:7890' // 端口号为你的代理端口,无需 http 前缀
}
安装完 firebase sdk 的 npm 包后,找到所在包的文件 node_modules\firebase-tools\lib\apiv2.js ,查找并替换如下内容
function proxyURIFromEnv() {
return 'http://127.0.0.1:7890' // 端口号为你的代理端口,需要携带 http 前缀
return (process.env.HTTPS_PROXY ||
process.env.https_proxy ||
process.env.HTTP_PROXY ||
process.env.http_proxy ||
undefined);
}
相关推荐
- sharding-jdbc实现`分库分表`与`读写分离`
-
一、前言本文将基于以下环境整合...
- 三分钟了解mysql中主键、外键、非空、唯一、默认约束是什么
-
在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。...
- MySQL8行级锁_mysql如何加行级锁
-
MySQL8行级锁版本:8.0.34基本概念...
- mysql使用小技巧_mysql使用入门
-
1、MySQL中有许多很实用的函数,好好利用它们可以省去很多时间:group_concat()将取到的值用逗号连接,可以这么用:selectgroup_concat(distinctid)fr...
- MySQL/MariaDB中如何支持全部的Unicode?
-
永远不要在MySQL中使用utf8,并且始终使用utf8mb4。utf8mb4介绍MySQL/MariaDB中,utf8字符集并不是对Unicode的真正实现,即不是真正的UTF-8编码,因...
- 聊聊 MySQL Server 可执行注释,你懂了吗?
-
前言MySQLServer当前支持如下3种注释风格:...
- MySQL系列-源码编译安装(v5.7.34)
-
一、系统环境要求...
- MySQL的锁就锁住我啦!与腾讯大佬的技术交谈,是我小看它了
-
对酒当歌,人生几何!朝朝暮暮,唯有己脱。苦苦寻觅找工作之间,殊不知今日之事乃我心之痛,难道是我不配拥有工作嘛。自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦。每每想到不由心中一...
- MySQL字符问题_mysql中字符串的位置
-
中文写入乱码问题:我输入的中文编码是urf8的,建的库是urf8的,但是插入mysql总是乱码,一堆"???????????????????????"我用的是ibatis,终于找到原因了,我是这么解决...
- 深圳尚学堂:mysql基本sql语句大全(三)
-
数据开发-经典1.按姓氏笔画排序:Select*FromTableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_as//从少...
- MySQL进行行级锁的?一会next-key锁,一会间隙锁,一会记录锁?
-
大家好,是不是很多人都对MySQL加行级锁的规则搞的迷迷糊糊,一会是next-key锁,一会是间隙锁,一会又是记录锁。坦白说,确实还挺复杂的,但是好在我找点了点规律,也知道如何如何用命令分析加...
- 一文讲清怎么利用Python Django实现Excel数据表的导入导出功能
-
摘要:Python作为一门简单易学且功能强大的编程语言,广受程序员、数据分析师和AI工程师的青睐。本文系统讲解了如何使用Python的Django框架结合openpyxl库实现Excel...
- 用DataX实现两个MySQL实例间的数据同步
-
DataXDataX使用Java实现。如果可以实现数据库实例之间准实时的...
- MySQL数据库知识_mysql数据库基础知识
-
MySQL是一种关系型数据库管理系统;那废话不多说,直接上自己以前学习整理文档:查看数据库命令:(1).查看存储过程状态:showprocedurestatus;(2).显示系统变量:show...
- 如何为MySQL中的JSON字段设置索引
-
背景MySQL在2015年中发布的5.7.8版本中首次引入了JSON数据类型。自此,它成了一种逃离严格列定义的方式,可以存储各种形状和大小的JSON文档,例如审计日志、配置信息、第三方数据包、用户自定...
你 发表评论:
欢迎- 一周热门
-
-
MySQL中这14个小玩意,让人眼前一亮!
-
旗舰机新标杆 OPPO Find X2系列正式发布 售价5499元起
-
【VueTorrent】一款吊炸天的qBittorrent主题,人人都可用
-
面试官:使用int类型做加减操作,是线程安全吗
-
C++编程知识:ToString()字符串转换你用正确了吗?
-
【Spring Boot】WebSocket 的 6 种集成方式
-
PyTorch 深度学习实战(26):多目标强化学习Multi-Objective RL
-
pytorch中的 scatter_()函数使用和详解
-
与 Java 17 相比,Java 21 究竟有多快?
-
基于TensorRT_LLM的大模型推理加速与OpenAI兼容服务优化
-
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)