我正在一个使用Firebase Realtime Database的项目中,我想知道是否最好使用JS库从客户端检索数据,或者使用NodeJS库接收客户端请求并检索数据通过NodeJS服务器并将其发送回客户端。两种解决方案都有优点还是缺点? (安全性,易于实施,速度等)
答案 0 :(得分:1)
尽可能使用客户端SDK。通过服务器代理时,这是您失去的东西:
没有实时更新。除非您要花费大量时间提出自己的通过网络套接字传输更新的方式,否则客户端将只能获得一个更新。根据请求更新。您将不必实时接收更新,并在更新发生时将其推送给客户端。
没有安全规则。您将无法使用安全规则有效地控制对数据库的访问。由于Admin SDK在完全控制整个数据库的情况下运行,因此您必须想出自己的方式来确定是否允许客户端读取或写入客户端。您可以尝试通过在每个请求上初始化admin sdk来解决该问题,以将其范围限制为特定的uid,但这效率低下,并且代码过多。
无客户端缓存。 Realtime Database客户端SDK均在本地缓存数据,因此将来对服务器上未更改的数据进行查询将更加快捷且成本更低。您总是可以尝试自己实现,但是准备花很多时间。
没有脱机同步。。使用客户端SDK写入数据时,即使脱机,数据实际上也会在服务器上发生更改(从其自身的角度来看)。并且当它重新联机时,它将自动将这些更改同步到服务器,而您无需执行任何操作。如果要通过服务器代理,则需要这种重试逻辑。
通过服务器可能会有一些优势,但是它高度依赖于您要执行的操作以及如何选择计算所节省的费用。