了解Firebase和google云功能的用途
比如说,我正在开发像Instagram这样的应用程序:用于iOS、Android和Web。我决定使用GoogleFirebase,因为它看起来确实简化了工作 用户在应用程序中需要的功能包括:了解Firebase和google云功能的用途,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,比如说,我正在开发像Instagram这样的应用程序:用于iOS、Android和Web。我决定使用GoogleFirebase,因为它看起来确实简化了工作 用户在应用程序中需要的功能包括: 授权/注册 上传照片 搜索其他人,跟踪他们并查看他们的照片 我来自传统的“自己的后端”开发,我确实需要设置一个服务器,创建数据库,最后编写API,让前端从服务器检索数据。这就是为什么我不清楚它在Firebase中是如何工作的 所以问题是我如何创建这样的应用程序: 我应该用云函数创建自己的API吗?或者可
- 授权/注册
- 上传照片
- 搜索其他人,跟踪他们并查看他们的照片
Firebase与您描述的传统设置之间的主要区别在于,对于Firebase,就应用程序开发人员而言,客户端可以直接访问数据库,而不需要中间自定义API层。Firebase提供各种语言的SDK,通常用于获取所需数据/提交数据更新 您还可以使用服务器端的管理SDK,但这些SDK是为了运行一些自定义业务逻辑,例如分析、外部服务中的缓存,而不是为了实现数据获取API层 这有两个重要后果:
users/$userId
,您将定义一条规则,说明只有经过身份验证的用户的id为$userId
时,才能写入此节点云功能允许您对数据更改做出反应。假设每次创建一个新用户时,您都希望向他发送一封欢迎电子邮件:您可以定义一个云函数,在每次向
用户
路径添加一个新节点时发送此电子邮件。它们允许您在发生写操作时运行通常在服务器端运行的代码,因此它们可以有非常广泛的用例:副作用(如发送电子邮件)、在外部服务中缓存数据、在Firebase中缓存数据以便于读取、分析、,等等我的答案肯定是不完整或不专业,但以下是我选择云功能的原因
性能
你提到你正在编写一个类似instagram的移动设备应用程序,那么我假设人们可以评论别人的照片,也可以查看这些评论。您希望如何从数据库下载评论并将其显示在用户设备上?我的意思是,在一篇帖子上可能会有成百上千的评论,你需要对你的结果进行分页。为什么不让服务器做所有的艰苦工作,释放用户的设备,等待结果呢?这看起来并没有多大的改善,但让我们面对现实,如果你的应用程序非常成功,你将有数百万用户,数百万条评论需要处理,服务器将比手机做得更好
安全性
如果您的项目很小,那么您确实不会担心性能,但是安全性呢?如果您在客户端执行所有操作,则基本上允许每个设备连接到数据库,这意味着每个设备都可以读取/写入数据库。一旦恶意用户发现您的数据库url,他所要做的就是
firebase.database().ref(...).remove();
使用一行代码,您将丢失所有数据。好吧,如果你说,那么我会想出一些好的安全规则,比如下面的规则:
这意味着,对于每个帖子,只有该帖子的所有者可以对其进行任何更改或阅读,其他人禁止做任何事情。这很好,但不现实。人们应该能够对帖子发表评论,那就是修改帖子,这条规则不适用于这种情况。但是,如果你让每个人都读/写,这又不安全了。那么,为什么不直接将.read
和.write
设为false,如下所示:
它是100%安全的,因为没有人可以对数据库中的任何东西做任何事情。然后,编写一个API来对数据库执行所有操作。API限制了可以对数据库执行的操作。你有经验吗