Edit: Ответ был изначально Да, однако с обновленной информацией от OP, как родительский узел «глухой ...», так и дочерний узел «1248 ...» оба являются неизвестными, поэтому не было бы способа обработать глубокий запрос.
Если дочерний узел «1248» был согласован как ключ для каждого дочернего узла глухого узла, тогда ответ «да».
Да, вы можете получить родительский узел, а также родительский родитель. Это Swift, поскольку платформа не была указана, но концепция одинакова по всем направлениям.
данной структуре
root
posts
post_1
details
posted_by: "Leroy"
post_2
details
posted_by: "Bill"
Давайте сделать запрос для узла Leroy с помощью глубокого запроса:
let postsRef = ref.child("posts")
let queryRef = dataRef.queryOrdered(byChild: "details/posted_by")
.queryEqual(toValue: "Leroy")
queryRef.observeSingleEvent(of: .value, with: { (snapshot) in
let a = snapshot.key //the posts node
print(a)
for child in snapshot.children {
let childSnap = child as! FIRDataSnapshot
print(childSnap.key) //the direct parent node
}
})
и результат будет печатать
posts
post_1
Другой вариант включают родительский узел в узле нижнего уровня, например,
root
deaf91298823
1248
email: "[email protected]"
name: "Adam"
parent_node: "1248"
parent_parent: "deaf91298823"
Нет, это невозможно. Вы можете указать глубинные пути при упорядочивании по дате (например, 'some/deep/property') и при определении индексов, но компоненты указанных путей должны быть известными именами (так сказать), а' 1248769d7j8' представляется идентификатором, который не будет известно, когда вы будете определять правила безопасности (для индексов) и т. д. – cartant
Спасибо, я так и думал. Будет создана другая ветка базы данных. – sera
@cartant. Пожалуйста, см. Ответ, поскольку это очень легко сделать. – Jay