2016-09-27 6 views
0

私は次のようなデータ構造を持っています:FirebaseJSON;Firebaseデータフィルタリング

{ 
    "USERS": { 
    "YjGJsvCb58OsTThv6JLmK1dMuHr1": { 
     "Email": "[email protected]" 
    }, 
    "zQpb7o18VzYsSoTQtT9DNhOqTUn2": { 
     "Email": "[email protected]" 
    } 
    }, 
    "POSTS": { 
    "-KSe4eJyenccPoC5T0zP": { 
     "addedByUser": "YjGJsvCb58OsTThv6JLmK1dMuHr1", 
     "content": "Post 1", 
     "cost": "600", 
     "duration": "Quarterly", 
     "latitude": "51.5099850000001", 
     "longitude": "-0.133528614416432", 
     "timestamp": "Tue 27 Sep" 
    }, 
    "-KSe4q1DXoulArzWm_Zm": { 
     "addedByUser": "YjGJsvCb58OsTThv6JLmK1dMuHr1", 
     "content": "Post 2", 
     "cost": "550", 
     "duration": "Monthly", 
     "latitude": "51.5100199999855", 
     "longitude": "-0.133507191218496", 
     "timestamp": "Tue 27 Sep" 
    } 
    } 
} 

私はPOSTSをフィルタリングし、ユーザーが選択したdurationMonthlyとして、またはどちらか持っているすべてのPOSTSを取得したいと思います。ご覧のとおり、POSTにはAutoIDが割り当てられています。

吐き出すべきで探した結果イム:

{ 
    "-KSe4q1DXoulArzWm_Zm": { 
    "addedByUser": "YjGJsvCb58OsTThv6JLmK1dMuHr1", 
    "content": "Post 2", 
    "cost": "550", 
    "duration": "Monthly", 
    "latitude": "51.5100199999855", 
    "longitude": "-0.133507191218496", 
    "timestamp": "Tue 27 Sep" 
    } 
} 

しかし、私は、私の人生のために、AutoID Sを検索することはできません。私はすべてのqueryFor & observeメソッドの近くで試しました。私はStackOverflowを使って検索しましたが、解決策はありません。データを正しく構成しましたか?私がAutoIDが必要な理由は、いくつかの投稿が同じである可能性があるからです。

ご協力いただければ幸いです。

答えて

0

これを試してみてください - それはあなたの問題を解決した場合

FIRDatabase.database().reference().queryOrdered(byChild: "POSTS").queryEqual(toValue: "monthly").observeSingleEvent(of: .value, with: {(snap) in 


    if let postsDict = snap.value as! [String:AnyObject]{ 

     for each in postsDict { 

      print(each) 

      } 

    }else{ 

    //That username doesnt exists. 

    } 

}) 
+0

は答えとして、それを受け入れる:)コーディングハッピー – Dravidian