swift - 从 Firebase 数据库中获取直接后代
问题描述
我最近一直在开发一个应用程序,但偶然发现了另一个问题(这就是程序员的生活,不是吗?)。作为记录,我正在使用最新版本的 Swift、XCode 和 Firebase。我只想获取父母的直系后代(我的参考)。这是我的 JSON 树:
users
family-name
user-1 // I want this...
pass: abc // but not this ...
user-2 // ... and this
pass: def // ... but not this
events // I skip this specifically in my code
event-1
a: a
b: b
event-2
a: a
b: b
event-3
a: a
b: b
如树中所示,我只想获取 user-1、user-2 和 user-3。
我曾尝试使用普通查询,但它没有工作除了得到我想要的那些,我还得到了孩子的价值。
let query = userRef.queryOrdered(byChild: "users")
query.observe(.value, with: { (snapshot) in
for child in snapshot.children {
let value = snapshot.value as? NSDictionary
for anotherChild in value! {
if "\(key)" == "events" {
print("Let's skip that, since it's just the events sub-tree!")
} else {
// my work goes here
}
我收到六个值返回给我,但我希望有两个。我不知道为什么!提前感谢任何可以提供帮助的人。
解决方案
实时数据库查询是“深度”的,因为对节点的请求总是重试该节点下的所有子节点。使用客户端库时没有“浅层”查询,也无法从节点中排除子节点。如果您想要特定的孩子,而不是他们的兄弟姐妹,您将不得不单独请求他们。
推荐阅读
- javascript - 更新日期对象分配的变量
- python - 如何计算熊猫数据框中元素最多的行
- configuration - slurmd.service 失败并且没有 PID 文件 /var/run/slurmd.pid
- python - CS50AI Tictactoe 函数的一个参数为 None 可能是什么原因?
- ruby-on-rails - 尝试使用 amazon s3 和carrierwave 托管文件时出错
- laravel - Flutter 未显示从调试控制台发送的所有 Pusher 事件,也未显示从 Laravel 发送的所有事件
- tarantool - 如何删除 Tarantool 空间中的字段?
- spring - 为什么 Gitlab CI 不想运行容器
- java - JpaRepository 周围的@Pointcut 不适用于默认方法
- r - mlr3:从 surv.gbm 获得响应(预测生存时间)