我正在尝试在Firebase for iOS上创建一个简单的用户数据库。我有两个文本字段,一个用于获取用户的电子邮件地址,另一个用于获取用户的密码。我希望电子邮件成为用户的uid。我试图通过创建一个名为“email”的变量来实现这一点,我设置的变量等于emailTextField.text!然后我实现了在Firebase中生成子代码的代码,如下所示:
ref = Database.database().reference()
ref.child("users").child(email).setValue(true)
这是我的问题:创建一个孩子并使用变量命名它不起作用。我可以做到以下几点:
ref.child("users").child("email")
但是一旦我拿走“电子邮件”周围的引号使它成为变量,程序就会崩溃。 如何使用用户输入在Firebase中命名孩子?
答案 0 :(得分:0)
Firebase节点/文档名称不支持电子邮件地址支持的相同字符集,例如。电子邮件地址中的符号会使子名称无效。
如果您尝试将孩子设为
ref.child("users").child("xyz@xyz.xyz")
你应该看到同样的错误。
如果您绝对需要使用电子邮件地址作为节点名称,我建议您以与firebase节点名称规则兼容的方式对电子邮件进行编码。
编辑:如果您使用的是firebase身份验证,则正常模式也是使用经过身份验证的用户对象返回的UID作为节点名称,而不是从文本字段输入的电子邮件地址。
一个简单的例子:
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if let user = user {
ref.child("users").child(user.uid).setValue(true)
}
}