我是Firebase的新手,因此任何提示将不胜感激。现在,我正在使用Firebase登录和身份验证为我处理所有身份验证。但是我想存储一些用户数据,例如用户名DOB,created_at ...我已经创建了一个用户节点,并且我将使用在注册或登录时获得的唯一ID将子节点附加到用户。但是,我想确保系统中没有重复的用户名。在写入服务器之前,如何检查用户名是否已存在?
我目前正在调查同一件事。我的问题是我还希望启用持久性,因此我需要了解可以脱机访问的内容。如果您使用的是持久性,我还建议您禁止进行某些特定操作,例如在客户端脱机时检查用户名是否存在,您可以通过侦听“ .info / connected”来进行操作,详情如下:
https://firebase.google.com/docs/database/ios/offline-capabilities#section-connection-state
我的个人工作流程如下:
检查Firebase数据库以查看其用户详细信息是否包括用户名:
DB/users/*userUID*/username != nil
当他们设置用户名时,请检查用户名是否存在于:
DB/usernames/*username*/ != nil
如果不存在,请在上面检查的两个数据库位置中写入用户名和用户ID。
例如。
user.uid = wewe32323
用户名= scuba_steve
DB/usernames/scuba_steve = wewe32323
DB/users/wewe32323/username = scuba_steve
因此,现在您有了数据库/用户名引用,可以快速检查以查看是否有人已经拥有用户名,并且还具有数据库/用户/可以在其中快速找到给定用户的用户名。
我不会说这是万无一失的,因为我仍然对并发请求有一些担忧。我正在调查的当前问题是,可以说您删除了与特定用户的用户名关联,该用户可能依赖于其数据库的本地副本来错误地断言他们仍被分配给该用户名。
您可以查看数据库写入规则,以禁止任何人修改现有数据(如果没有现有数据,则只能写入DB / usernames目录。这将防止覆盖任何先设置用户名的人,我认为这是重要的一步。
还可能值得调查交易:
https://firebase.google.com/docs/database/ios/save-data#save_data_as_transactions
但我认为,以上段落中提到的正确书写规则应允许可靠的书写。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句