Ios 使用ChildAdded从firebase数据库中使用swift 4获取第一个密钥
我正在尝试从firebase数据库中获取第一个密钥,但由于某些原因,没有打印任何内容。如何使用.childAdded从firebase数据库获取第一个密钥 通常在从数据库检索项目列表时使用添加的子事件。与返回位置的全部内容的值不同,添加的child_为每个现有子级触发一次,然后在每次将新子级添加到指定路径时再次触发。事件回调传递一个包含新子级数据的快照。出于排序的目的,还向它传递了第二个参数,该参数包含前一个子级的键 发件人: 根据您的要求,这是可能的。增值和增值 然后:Ios 使用ChildAdded从firebase数据库中使用swift 4获取第一个密钥,ios,swift,firebase,firebase-realtime-database,swift4,Ios,Swift,Firebase,Firebase Realtime Database,Swift4,我正在尝试从firebase数据库中获取第一个密钥,但由于某些原因,没有打印任何内容。如何使用.childAdded从firebase数据库获取第一个密钥 通常在从数据库检索项目列表时使用添加的子事件。与返回位置的全部内容的值不同,添加的child_为每个现有子级触发一次,然后在每次将新子级添加到指定路径时再次触发。事件回调传递一个包含新子级数据的快照。出于排序的目的,还向它传递了第二个参数,该参数包含前一个子级的键 发件人: 根据您的要求,这是可能的。增值和增值 然后: if let firs
if let first = child_array.first?.key {
print(first) // First Key
}
重要提示:child_added随机收集这些数据,您不应该使用它对数据进行排序
如果你真的在问如何只得到一个节点的第一个子节点,这是非常容易的。下面介绍如何仅获取/users节点的第一个子节点
func getFirstChild() {
let usersRef = self.ref.child("users")
usersRef.observeSingleEvent(of: .childAdded, with: { snapshot in
print(snapshot)
})
}
或
如果你只是想要钥匙
或者,如果要使用查询执行相同的操作
func getFirstChildAgain() {
let usersRef = self.ref.child("users")
let query = usersRef.queryOrderedByKey().queryLimited(toFirst: 1)
query.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot)
})
}
在{snapshot in if let snapshot=snapshot{guard let first=snapshot.children.allObjects.first中使用if let条件作为?DataSnapshot else{return}printfirst}尝试类似这样的操作OP询问如何获取父节点下的第一个节点。虽然最终结果可能是该节点,但您必须小心使用。childAdded,因为它会迭代所有节点,一次迭代一个。然后将每个节点加载到未真正使用的数组中。如果有一百万个子节点,它将迭代所有节点在退出之前,这可能需要一段时间,并且可能会使设备过载。它还将观察者留在该节点上,因此如果添加了另一个节点,即1M+1节点,它将再次返回整个节点,并在每次添加另一个子节点时提供相同的结果added@Jay的确如此,但op也没有提到任何拥挤的交通
func getFirstChild() {
let usersRef = self.ref.child("users")
usersRef.observeSingleEvent(of: .childAdded, with: { snapshot in
print(snapshot)
})
}
print(snapshot.key)
func getFirstChildAgain() {
let usersRef = self.ref.child("users")
let query = usersRef.queryOrderedByKey().queryLimited(toFirst: 1)
query.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot)
})
}