【发布时间】:2016-09-09 21:30:58
【问题描述】:
问题--->
有没有办法检索键为
autoID的节点,该节点可能包含特定键。就像在下面的 JSON 结构中,我在一些autoID中有一个子节点powers,不是全部,我只想检索那些不知道其中有键powers的节点对应的value可能是什么。在以下两种建议的方法中,哪一种会消耗更少的带宽?
我的 JSON 树
node1
-node12
-autoId1
expo: "5122223333"
users:
-MqrvHRBTRcPzrvAOdkklBzeFW7E2
firstName: "Margery"
lastName: "Lady"
-autoId2
powers: "Triple3"
expo: "2123338983"
users:
-LqrsadaDs12BTRcPzrvABzeFW7E2
firstName: "Tyrion"
lastName: "Imph"
-node21
-autoId3
powers: "Triple"
expo: "5123333"
users:
-MqrvHRBTRcPzrvAOdkklBzeFW7E2
firstName: "Cersie"
lastName: "Lady"
-autoId4
powers: "Quad"
expo: "2128983"
users:
-LqrsadaDs12BTRcPzrvABzeFW7E2
firstName: "Sansa"
lastName: "Lady"
我尝试了什么--->
-
检索整个
node12,然后检查哪些autoId 具有特定的key。例如让我们说权力:“Triple3”let prntRef = FIRDatabase.database().reference().child("node1").child("node12") prntRef.observeSingleEventOfType(.Value, withBlock: {(snap) in if snap.exists(){ for each in snap.value as! [String:AnyObject]{ prntRef.child(each.0 as! String).child("powers").observeSingleEventOfType(.Value, withBlock: {(IMsnap) in if IMsnap.exists(){ //Found The correct node } }) } }else{ // } }) -
我的另一个替代解决方案是:-
FIRDatabase.database().reference().child("node1").child("node12").queryOrderedByChild("powers").observeSingleEventOfType(.Value, withBlock: {(snap) in if let snapDict = snap.value! as? [String : AnyObject]{ print(snapDict.keys.first!) //Retrieving My AutoID .Nut this gives me entire node. } for each in snap.value as! [String:AnyObject]{ print(each.0) //Retrieving My AutoID } }) })
注意:-我在 Firebase 论坛上发现了一些类似的 Q,但似乎没有人回答它:-https://groups.google.com/forum/#!topic/firebase-talk/ZDHKwxRMiKQ
【问题讨论】:
标签: ios swift firebase swift2 firebase-realtime-database