Значение Firebase не обновляется? - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь обновить значения в firebase, используя метод ниже. Добавление лайков работает нормально. Но я хочу добавить UID человека, который понравился в другом узле. Поэтому я пытаюсь использовать первое обновление Firebase в верхней части функции.

Проблема, однако, заключается в том, что первое обновление огня не запускается. Как мне это исправить?

func addLike(index: Int) {
        self.databaseRef.child("Likes").child((self.post?.user.userID)!).child(self.postPath).child((self.post?)!).updateChildValues([Auth.auth().currentUser?.uid : true])

        databaseRef.child("MediaStats").child((post?.user.userID)!).child(postPath).child((post?)!).observeSingleEvent(of: .value, with: { snapshot in
            var valLikes = snapshot.childSnapshot(forPath: "likes").value!

            if valLikes is NSNull {
                self.databaseRef.child("MediaStats").child((self.post?.user.userID)!).child(self.postPath).child((self.post?)!).updateChildValues(["likes" : 1])

            } else {
                valLikes = (valLikes as! Int) + 1                    self.databaseRef.child("MediaStats").child((self.post?.user.userID)!).child(self.postPath).child((self.post?)!).updateChildValues(["likes" : valLikes])
            }
        })
    }

1 Ответ

0 голосов
/ 14 марта 2019

Я предполагаю, что 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...