如何合并两个 Firebase 快照

How to merge two Firebase snapshots

我是 运行 Firebase 中的嵌套查询(使用 Swift)。这returns两张快照。通常,当只有一个快照时,我将查询结果存储在字典中

var query1 = [FIRDataSnapshot]! = []
query1.append(snapshot)

有谁知道如何合并两个快照来创建一个字典条目? 这些块看起来像这样:

_refHandle = FirebaseRef.child("query1key").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
    let key2 = snapshot.value?.objectForKey("key2") as! String
    self.FirebaseRef.child("query2key").child(key2).observeSingleEventOfType(.Value, withBlock: { (snapshot2) in
        // merge the two snapshots
   })
})

一旦两个快照都可用,您就可以从中获取必要的值并根据该信息创建一个新对象。

class MergedObject {
    var value1: String!
    var value2: String!

    init(value1: String!, value2: String!) {
        self.value1 = value1
        self.value2 = value2
    }        
}

然后将该对象添加到您的字典中。

_refHandle = FirebaseRef.child("query1key").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
    let key2 = snapshot.value?.objectForKey("key2") as! String
    self.FirebaseRef.child("query2key").child(key2).observeSingleEventOfType(.Value, withBlock: { (snapshot2) in
        var value1 = snapshot.childSnapshotForPath("value1").value as! String
        var value2 = snapshot2.childSnapshotForPath("value1").value as! String
        var mergedObject = MergedObject(value1: value1, value2: value2)
   })
})