Firebase:查询和删除范围内的键

时间:2016-10-26 14:06:54

标签: swift firebase firebase-realtime-database

如果我在Firebase实时数据库中有一些像这样的数据

root--.
      |--stuff--.
                |--1
                |--2
                |--3
                |--4
                |--5
                |--6
                |--7   

其中所有这些数字都是包含更多数据的键,我想删除小于或等于4的所有键,如何在不下载整个“stuff”分支的情况下执行此操作?

使用swift我认为我可以通过

查询该范围内的键
let ref = FIRDatabase.database().reference().child("stuff")
let query = ref.queryEnding(atValue: 4)

但我不知道如何检索键名本身,以便我可以删除它们类似于这个伪代码

for key in queryResults {
    let ref = FIRDatabase.database().reference().child("stuff/\(key)")
    ref.setValue(nil) 
}

(实际上我正在处理时间戳键,我想删除已经太旧的数据分支。)

2 个答案:

答案 0 :(得分:0)

不确定如何在swift中执行此操作,但您可以使用orderByKey执行此操作。

    .database().reference()
    .child("stuff")
    .orderByKey()
    .startAt(STARTING_TIMESTAMP)
    .endAt(ENDING_TIMESTAMP)

然后遍历相应结果的ID。

这将下载这些孩子的所有信息。如果您不想要,则必须将其存储在其他地方以便轻松删除。

答案 1 :(得分:0)

使用Swift 3 / Firebase 2.x示例代码从快照中获取密钥

for child in (snapshot?.children)! {           
     let snap = child as! FDataSnapshot
     print(snap.key)                 
}