我正在尝试使用以下方法更新Firebase中的值。喜欢的添加效果很好。但是我想添加另一个节点中喜欢的人的UID。因此,我尝试在函数顶部使用第一个Firebase更新。
但是,问题是第一次启动更新似乎没有运行。我该如何解决?
func addLike(index: Int) {
self.databaseRef.child("Likes").child((self.post?.user.userID)!).child(self.postPath).child((self.post?.media[index].numberMedia)!).updateChildValues([Auth.auth().currentUser?.uid : true])
databaseRef.child("MediaStats").child((post?.user.userID)!).child(postPath).child((post?.media[index].numberMedia)!).observeSingleEvent(of: .value, with: { snapshot in
var valLikes = snapshot.childSnapshot(forPath: "likes").value!
print(valLikes, " These are the likes")
if valLikes is NSNull {
print("no likes ")
print((self.post?.media[index].numberMedia)!, " Media numberewrwerewr")
self.databaseRef.child("MediaStats").child((self.post?.user.userID)!).child(self.postPath).child((self.post?.media[index].numberMedia)!).updateChildValues(["likes" : 1])
} else {
valLikes = (valLikes as! Int) + 1
print((self.post?.media[index].numberMedia)!, " Media numberewrwerewr")
self.databaseRef.child("MediaStats").child((self.post?.user.userID)!).child(self.postPath).child((self.post?.media[index].numberMedia)!).updateChildValues(["likes" : valLikes])
}
})
}
答案 0 :(得分:1)
我假设postPath
中有多个子分支名称以使其成为路径。您的意思是改为引用帖子的uid吗?如果不是,您介意为Likes
发布分支的屏幕快照吗? postPath
和post?.media[index].numberMedia
还行:
self.databaseRef.child("Likes").child((self.post?.user.userID)!).child(self.postPath).child((self.post?.media[index].numberMedia)!).updateChildValues([Auth.auth().currentUser?.uid : true])
查找一个子分支,其深度为4个分支。您是不是没有散布数据结构,还是正在错误地找到该值?
编辑:
尝试换出
.updateChildValues([Auth.auth().currentUser?.uid : true])
为
.child(Auth.auth().currentUser?.uid).setValue(true)