Firebase值未更新?

时间:2019-03-13 22:30:34

标签: ios swift firebase firebase-realtime-database

我正在尝试使用以下方法更新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])
            }
        })
    }

1 个答案:

答案 0 :(得分:1)

我假设postPath中有多个子分支名称以使其成为路径。您的意思是改为引用帖子的uid吗?如果不是,您介意为Likes发布分支的屏幕快照吗? postPathpost?.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)