iOS Firebase-扇出时-'InvalidPathValidation',原因:“((child :)必须为非空字符串,且不包含'。” '#''$''['或']''

时间:2019-01-13 04:18:45

标签: ios swift firebase firebase-realtime-database

我正准备将数据发送到不同的裁判。当我第一次发布以下代码时,一切正常。然后,我再次使用相同的确切postId重新发布代码,然后再次正常工作。

let root: DatabaseReference!
let uid = gHcqsRzK0xZJ3Zp11xAikDTKIKw2 // Auth.auth().currentUser?.uid

root = Database.database().reference()

let postId = "123"
let postsRef = "posts/\(uid)/\(postId)"
let usesrRef = "users/\(uid)/\(postId)"

let dict = [String: Any]()
dict.updateValue(someOtherDict, forKey: postsRef)
dict.updateValue(someOtherDict, forKey: usersRef)

root.updateChildValues(dict, withCompletionBlock: { [weak self] (error, ref) in

但是,当我尝试相同的完全相同的代码并将附加的子代添加到扇出引用中时,第一次一切正常,而第二次尝试重新发布时,我总是收到错误消息

  

'InvalidPathValidation',原因:'(child :)必须为非空字符串   并且不包含“。” '#''$''['或']''

let postId = "123"
let additionalUid = "456"
let postsRef = "posts/\(uid)/\(postId)/\(additionalUid)"
let usesrRef = "users/\(uid)/\(postId)/\(additionalUid)"

我已经检查了几个小时(打印语句和调试器),并且uid,postId或extraUid包含任何无效字符。

为什么仅在扇出扇形并将附加的子项附加到引用上时才会出现此问题?

1 个答案:

答案 0 :(得分:0)

尝试并修复您的uid,使其看起来像这样

guard let uid = Auth.auth().currentUser.uid else { return }