我正在使用Firebase来跟踪用户的订阅信息。他们必须在Firebase中注册,然后在购买完成后,Firebase将设置/续订他们的订阅。数据库是结构化的
root
-> users
-> UID
->user info
我添加了这样的新用户信息:
func setExpiration() {
guard let user = Auth.auth().currentUser else {
return
}
let usersRef = Database.database().reference().child("Users")
usersRef.observeSingleEvent(of: .value, with: { (dataSnapshot) in
if let dict = dataSnapshot.value as? [String : [String : String]] {
...
// Checks to see if the user exists in the database yet.
if let userDict = dict[user.uid] {
...
usersRef.child(user.uid).updateChildValues(keyedValues, withCompletionBlock: { (error, databaseReference) in
if let error = error {
...
return
}
...
})
// User does not exist in database and needs added.
} else {
...
usersRef.updateChildValues([user.uid : keyedValues], withCompletionBlock: { (error, databaseReference) in
if let error = error {
...
return
}
...
})
}
}
})
}
我的问题是,有时最近,用户信息直接在users
桶中而不是在他们的UID中。在玩完这个之后我无法复制这个问题。到目前为止,似乎并非所有用户都遇到此问题。是否有可能uid有时会变回空白并导致它写入错误的位置?