4
ユーザーにスワイプ可能なカレンダーを表示するホテル予約アプリがあります。今の最終目標は、予約された各日付の下に小さい点でインターフェイスのようなカレンダーを提供することです。今のところ、開始日と終了日(開始日と終了日はそれぞれ月の開始日と終了日)の間のすべての予約をコンソールに印刷しようとしています。Firebaseと日付フィルタの操作
しかし、これをFirebaseで使用することはできません。ここでのデータは、現時点ではFirebaseにある方法は次のとおりです。
{
"reservations" : {
"-KSgRjwpssoZJWjV9ScM" : {
"checkin" : 1474950600,
"checkout" : 1475116200,
"customer" : "-KMVMMudWJlFeiimtgJl"
}
}
}
そして、ここでは私のスウィフトコードは、データを取得するためにです:
private var ref: FIRDatabaseReference!
// viewdidload:
ref = FIRDatabase.database().reference()
ref.keepSynced(true)
// logic to fetch data
DispatchQueue.global().async {
// Background Processing
// Check Firebase for events between startdate and enddate
print("Fetching Reservations")
print(startDate.timeIntervalSince1970)
print(endDate.timeIntervalSince1970)
self.ref.child("reservations").queryStarting(atValue: startDate.timeIntervalSince1970, childKey: "checkin").observe(.childAdded, with: { (snapshot) -> Void in
print("Data Retrv.\n")
print(snapshot)
})
}
はここで今、コンソール上に印刷する内容だ:
Fetching Reservations
1469989800.0
1472581800.0
Fetching Reservations
1472668200.0
1475173800.0
データが2番目の範囲に入ることははっきりとわかりましたが、まだそれを表示することはできません。
ここで間違っている可能性がありますか?ありがとう。
私が '.queryStarting(atValue:startDate、childKey:" checkin ")を使う理由は、月に基づいて予約をロードする必要があるからです。だから、ユーザーが別の月にスワイプすると、 'checkin'と' checkout'である 'x date'と' yyyy date'での予約のfirebaseを問い合わせます。だから、あなたの提案されたアプローチは、8月にも9月のような予約を私に与えます。なぜなら、タイムスタンプは(チェックインと比較して)よりも大きいからです。 –
あなたの答えに追加すると、私はあなたのクエリを拡張することによって動作するようになった: 'self.ref.queryOrdered(byChild:" checkin ")。queryStarting(atValue:startDate.timeIntervalSince1970).queryEnding(atValue:endDate.timeIntervalSince1970、childKey: "チェックアウト")。observe(.childAdded、with :(スナップショット) - >無効、 印刷(スナップショット) )} ' –