我整合了五个视图控制器的注册流程,而不是一个用于 Firebase 注册的中央 VC。
通常情况下,在注册之前会出现数据丢失的问题,但我会以编程方式将所有输入的值通过 segue 推送到最终确认页面,并将数据发送到 Firebase 最终进行身份验证。
我的问题就在那里 - 我想检查用户名是否存在before报名。这对于我的应用程序的用户体验至关重要,我不能只用一个 VC 来完成这一切。
这是我的 UsernameViewController 的代码:
let rootRef = FIRDatabase.database().reference()
rootRef.queryOrdered(byChild: "users").queryEqual(toValue: self.chooseUsernameTextField.text!)
.observe(FIRDataEventType.value, with: { (snapshot: FIRDataSnapshot!) in
if snapshot.hasChildren() == false {
print("not found")
} else {
print("usr found")
}
});
这是我的 Firebase 数据库安全规则的代码
{
"rules": {
".read": false,
".write": false,
"users": {
".validate": "data.child('username').val() === true",
".read": true
}
}
}
最后是我的数据树的屏幕截图(我的数据树不允许我嵌套任何新用户或由于某种原因创建没有值的用户节点):
Firebase 数据树图片:应用程序名称/用户 https://i.stack.imgur.com/HYHRC.png
我一直怀疑我的数据规则和树是否已正确配置以匹配代码,但我陷入了一个 XY 问题,即不知道如何确保 Firebase 安全性以完成用户名检查代码。
请帮我! :(