Как обновить один экземпляр документа по значению в Firebase? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть следующая функция, которая перебирает массив строк тегов.

static func updateTags(tags:Array<String>){

        let currentUser = User.current

        for tag in tags{
            let ref = Database.database().reference().child("tags").child(currentUser.uid).child(?????)

            let tag = Tag(title: tag,latestThumbnailURL:somethingnew,latestUpdate: now)
            let dict = tag.dictValue
            ref.updateChildValues(dict)
    }

Для каждой строки тега я хочу, чтобы он просматривал тег в БД по заголовку тега, получал ключ идентификатора тега, а для этого конкретного ключа обновлял его значения с помощью last latestThumbnailURL, latestUpdate.

Я застрял, так как не могу определить, как искать идентификатор тега по заголовку тега, поэтому я не могу сформировать полную ссылку на конкретный объект тега. Как я могу это сделать?

1 Ответ

0 голосов
/ 27 апреля 2018

Кажется, вам нужно разбить проблему на логические шаги!

Из того, как я понимаю ваш вопрос, вам нужно сначала получить tag дочерние объекты вашего пользователя.

Простой способ сделать это - сначала получить все дочерние элементы для вашего пользователя, а затем выполнить итерацию по этим данным, чтобы найти ваши теги с новыми ссылками для получения данных.

ref = Database.database().reference().child("tags").child(currentUser.uid)  
ref.observeSingleEvent(of: .value, with: { snapshot in
       print(snapshot.childrenCount) items
       for rest in snapshot.children.allObjects as! [FIRDataSnapshot] {
           print(rest.value)
           // Create your new db refs with the tag info
           }
})

В качестве альтернативы, я бы порекомендовал перейти в Firebase's Firestore, что значительно упрощает такие запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...