假设我正在开发像Instagram这样的应用程序:用于iOS、安卓和网络。我决定使用,因为它看起来确实简化了工作。
用户在应用程序中需要的功能如下:
我来自传统的“自有后端”开发,在那里我确实需要设置一个服务器,创建数据库,最后编写API让前端从服务器检索数据。这就是为什么我不清楚它是如何在Firebase中工作的。
因此,问题是我如何创建这样的应用程序:
很抱歉有这么愚蠢的问题,但这真的很难从零开始。
发布于 2018-01-22 18:39:30
Firebase与传统设置的主要区别在于,对于应用程序开发人员来说,对于应用程序开发人员来说,客户端可以直接访问数据库,而不需要中间自定义API层。Firebase以各种语言提供SDK,这些语言通常用于获取所需的数据/提交数据更新。
您也有可以使用服务器端的admin,但这些都是为了运行一些自定义业务逻辑--例如分析、外部服务中的缓存--而不是用于实现数据获取API层。
这有两个重要后果:
users/$userId中,您将定义一条规则,说明只有在经过身份验证的用户具有$userId id的情况下,才能将此节点写入。这两点允许您跳过传统API的两个主要角色:验证访问和获取/格式化数据。
云功能允许您对数据更改作出反应。假设每次创建新用户时,您都希望向他发送欢迎电子邮件:您可以定义一个云函数,每次在users路径附加一个新节点时发送此电子邮件。它们允许您在写入时运行通常在服务器端运行的代码,因此它们可以有非常广泛的用例:副作用(如发送电子邮件)、外部服务中的缓存数据、在Firebase中缓存数据以便于读取和分析等。
发布于 2018-01-22 18:25:14
发布于 2018-01-22 18:40:13
我的答案是绝对不是完全或专业的,但以下是我选择Cloud Functions的原因
性能
您刚才提到您正在编写一个类似instagram的移动设备应用程序,然后我假设人们可以评论其他人的照片,也可以查看这些评论。如何从数据库下载评论并将其显示在用户的设备上?我的意思是,有可能有成百上千的评论,在一个帖子,你将需要分页你的结果。为什么不让服务器做所有的艰苦工作,释放用户的设备,等待结果?这似乎不太好,但让我们面对它,如果你的应用非常成功,你将有数百万用户,数百万评论,你需要处理,服务器将比手机做得更好。
安全
如果您的项目很小,那么您确实不会担心性能,但是安全性呢?如果您在客户端执行所有操作,则基本上允许每个设备连接到数据库,这意味着每个设备都可以从数据库中读取/写入数据库。一旦恶意用户发现了您的数据库url,他所要做的就是
firebase.database().ref(...).remove();使用1行代码,您将丢失所有数据。好吧,如果你说的话,我会想出一些好的安全规则,如下所示:

这意味着,每个帖子,只有该帖子的所有者可以对其进行任何修改或阅读,其他人被禁止做任何事情。这很好,但不现实。人们应该能够评论帖子,那就是修改帖子,这条规则不适用于这种情况。但是,如果你让每个人读/写,那就不安全了。那么,为什么不让.read和.write变成假的,就像这样:

它是100%安全的,因为没有人能对你的数据库中的任何东西做任何事情。然后,编写一个API来对数据库执行所有操作。API限制了可以对数据库执行的操作。您有编写API的经验,我相信您可以做一些事情来增强API的安全性,例如,如果用户想删除他在deletePost API中创建的帖子,您应该首先对用户进行身份验证。这样,“任何人”都不会对你的数据库造成任何损害。
https://stackoverflow.com/questions/48387308
复制相似问题