【发布时间】:2017-12-15 17:38:44
【问题描述】:
我正在尝试使用电子邮件作为值来更新 Firebase 数据库。
但是 Swift 3 "updateChildValues" 方法失败并出现错误:Invalid key in object. Keys must be non-empty and cannot contain '.' '#' '$' '[' or ']''
代码是:
let key = emailQueueRef.childByAutoId()
if user.email != nil {
inviteUpdate["\(key)"] = user.email!
}
emailQueueRef.updateChildValues(inviteUpdate)
可能是因为电子邮件中的点而失败。另一方面,将其编码为 Base64 并不能修复它。 同时使用“setValue”方法有效:
emailQueueRef.childByAutoId().setValue(user.email!)
但是这种方法对我来说不是很好,因为我同时使用了几条路径。 我在 Firebase 指南和文档中没有找到任何关于该案例的信息 是 Firebase 的错误,还是我误解了什么?
【问题讨论】:
-
使用字符串值更改了电子邮件:“dummy”。无论如何它都没有奏效。只有当使用“key”作为参考时,它才有效。但这与 firebase 指南和文档相矛盾。我认为这是一个错误。
-
不是。您使用电子邮件地址作为字典中的键,它成为数据库中的键。并且键不能包含
.字符。请参阅下面的更新答案和 cmets。
标签: ios firebase swift3 firebase-realtime-database