2017-05-07 53 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 
});