前提・実現したいこと
Firestoreで以下のようなデータ構造を作成しています。
CollectionA documentAA -- key:value value:A (String型) documentAB -- key:value value:B (String型) documentAC -- key:value value:C (String型) CollectionB documentBA -- key:ref value:/CollectionA/documentAC (reference型) -- key:date value:2019/4/12 HH:MM:SS (timestamp型) documentBB -- key:ref value:/CollectionA/documentAB (reference型) -- key:date value:2019/4/11 HH:MM:SS (timestamp型) documentBC -- key:ref value:/CollectionA/documentAA (reference型) -- key:date value:2019/4/10 HH:MM:SS (timestamp型)
CollectionBでdateの降順に取得し、
そこからCollectionA内のvalueを降順に合わせて出力したいのですが、うまくいっておりません。
こういった類はデータ構造から見直しを行う必要がありますでしょうか?
(なお、一括取得後にクライアント側でソートする方法以外を検討しています)
<出力例>
C
B
A
試したこと
以下のようなソースを実行しましたが、CBAの順序で出力されずにBCA等順序がバラバラになってしまいます。
どうやらcollectionBの取得時は降順になっているのですが、その後の再取得処理にて、順序がおかしくなっているようにみえます。
Swift
1 2let db = Firestore.firestore() 3let collectionBRef = db.collection("CollectionB").order(by:"date",descending: true) 4 5// ここでCollectionBをソートして取得 6collectionBref.getDocuments(){(querySnapshot,err) in 7 for document in querySnapshot!.documents { 8 let data = document.data() as NSDictionary 9 let ref:DocumentReference = data["ref"] as! DocumentReference 10 11 //ソートされた順で、随時CollecitonAの情報を取得 12 ref.getDocument(){(document, error) in 13 let data = document.data() as! NSDictionary 14 let str = data["value"] as! String 15 print(str) //この出力時には順序が保持されない 16 } 17 } 18} 19
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/21 02:00