如何在Firebase中按值更新单个文档实例?

时间:2018-04-26 20:40:54

标签: swift firebase firebase-realtime-database

我有以下函数循环遍历标记字符串数组。

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)
    }

对于每个标记字符串,我希望它通过标记标题在数据库中查找标记,获取标记ID密钥,对于该特定密钥,使用新的latestThumbnailURL,latestUpdate更新其值。

我陷入困境,因为我无法确定如何通过标签标题查找标签ID,因此我无法形成对特定标签对象的完整引用。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您似乎需要将问题分解为逻辑步骤!

根据我的理解,您需要先获取用户的tag子对象。

执行此操作的一种简单方法是首先为您的用户获取所有子项,然后迭代该数据以查找带有新refs的标记以从中获取数据。

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的Firestore,这样可以更轻松地进行此类查询。