2017-05-07 140 views
0

您好每個孩子都有一個Firebase節點,並設置日期。在我的查詢中,我想刪除過去發生的所有事件。按日期過濾Firebase節點

火力地堡
workouts 
    -{key} 
     - title:"My Workout" 
     - date: "2017-04-1T10:30:27.250Z" 
    -{key2} 
     - title:"The Workout" 
     - date: "2017-05-1T12:00:27.250Z" 

JS(Ionic2,angularfire2)

this.allEvents = this.af.database.list('/events', { 
    query: { 
    orderByChild: 'date' 
    } 
}); 

回答

1

要結束.endAt(結束時間),以限制查詢

從火力地堡文檔。 https://firebase.google.com/docs/database/admin/retrieve-data#range-queries

var ref = db.ref("workouts"); 
    ref.orderByChild("date").endAt(endTime).on("child_added", function(snapshot) { 
    console.log(snapshot.key); 
    }); 

,那麼你會遍歷列表,刪除每一個

+0

感謝您的幫助,但我需要修改你提示: 讓ENDTIME =新的日期()toISOString(); this.allEvents = this.af.database.list( '/事件',{ 查詢:{ orderByChild: '日期', startAt:結束時間, } }); – Xerri

+0

如果評論有助於解決您的問題,請您將其標記爲:) – Bergur

0
  1. 迭代通過陣列,並比較當前日期與所述過去的日期。
  2. 如果它是過去發生的事件,請將其刪除。從angularfire documentation

$刪除(recordOrIndex)

從數據庫中,並從本地陣列刪除的記錄。此 方法返回一個承諾,該記錄在 服務器上被刪除後解析。它將包含對刪除的 記錄的Firebase參考。它接受數組索引或對數組中存在的 項的引用。

var list = $firebaseArray(ref); 
var item = list[2]; 
list.$remove(item).then(function(ref) { 
    ref.key === item.$id; // true 
});