Firebase不能观察,直到访问一次

Firebase是在APPDelegateconfiguration的。

阅读设置为在规则中。

但是,在用户login到我的应用程序之前,我正在检查Firebase数据库的单独表中的用户名。 它会完全跳过观察块,直到我强制login到另一个已经创build的我的帐户。 然后,当我重新构build应用程序时,块不再被跳过,而是实际访问表。

当我在新设备上运行应用程序时,如何“唤醒”Firebase,以便我可以检查用户名,而无需事先使用现有帐户login应用程序?

您可能需要重新考虑应用程序的结构。

如果您在进行身份validation之前检查用户名,则意味着该节点已公开,任何人都可以获取所有用户名的副本。 显然,本身可能不是一个大问题,但如果您的用户决定使用电子邮件,谁抓住名单谁拥有即时列表,他们可以垃圾邮件。

任何观察者添加到节点时,只要添加观察者,该节点就会被读取一次。 当您启动应用程序时,您可以使用.childAdded来遍历现有节点以预加载一些数据,例如购物清单,然后添加任何新的grocie会通过事件发送给您的应用程序。

同样,.value事件将在整个节点中读取,并为未来事件留下一个观察者。

用户名的问题是棘手的,你现在的做法现在可能会长期困扰你。

更好的方法是利用Firebase身份validation。

Firebase会为您处理所有用户名和密码。 它非常强大和灵活,可以避免遇到的问题。 它会告诉您是否存在用户名,它将执行密码重置电子邮件,您可以从Firebase控制台pipe理用户。 这是要走的路。

如果要添加用户名function,可以通过向/ users节点添加用户名或昵称节点来完成

 /users uid_0 email: "bill@email.com" username: "bill_the_cat" uid_1 email: "clark@email.com" username: "superman" 

一旦用户使用Firebase身份validation进行身份validation,那么只要在应用程序中显示用户信息,只需查找您需要的uid(uid_1),然后抓取用户名节点(超人)进行显示即可。