Как мой вопрос. Я не могу получить данные из firebase, когда пытаюсь использовать queryEqualToValue с ключом auto id.
self.ref.child(..my child..).queryOrderByChild("name").queryEqualToValue("my name")
Автоматический идентификатор ребенка над «именем» ребенка.
Изменить: для моего дерева json
- Студенты
- (автоматический идентификатор)
- имя
- имя
- ник
- имя
- (автоматический идентификатор)
Моим настоящим данным это не нравится, но это, например, структура. Очень хочу проверить равно "имя".
Вот мой код
let ref = FIRDatabase.database().reference()
ref.child("Students").queryOrderedByChild("name").queryEqualToValue("Jason bourne").observeEventType(.Value, withBlock: { snapshot in
print("value : " + snapshot.value)
}
3 ответа
Учитывая, что ваша база данных в реальном времени выглядит примерно так:
{
"students": {
1: {
"name": {
"first_name": "Nathapong",
"nick_name": "Oniikal3"
}
}
}
}
Вы можете наблюдать путь учеников с типом события ChildAdded
и упорядочивать запрос по дочернему ключу name/first_name
. Затем вы можете использовать queryEqualToValue
, чтобы найти студентов с определенным именем.
let ref = FIRDatabase.database().referenceWithPath('students').queryOrderByChild("name/first_name").queryEqualToValue("Nathapong")
ref.observeSingleEventOfType(.ChildAdded, block: { snapshot in
print(snapshot)
})
Перед использованием запросов с дочерними элементами вам необходимо указать это с помощью ".indexOn":["name"]
в правилах базы данных. Примеры см. В документации.
{
"rules":{
".write": "true",
".read": "true",
"Students": {
"$key": {
".indexOn":["name"]
}
}
}
}
Ваши правила чтения / записи могут быть там, где вам нужно. .indexOn
похоже на другое правило, наряду с .validate
Этот код должен работать. Проверьте имена, если я допустил ошибки, и введите свои данные.
self.ref.child("Students").child("name").queryOrderedByChild("first name").queryEqualToValue("my name").observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in
print(snapshot.value)
}
Похожие вопросы
Новые вопросы
swift
Swift — это язык программирования общего назначения, разработанный Apple Inc., впервые выпущенный в 2014 году для своих платформ и Linux. Swift имеет открытый исходный код. Используйте тег только для вопросов о языковых функциях или необходимости кода в Swift. Используйте теги [ios], [ipados], [macos], [watch-os], [tvos], [swiftui], [cocoa-touch] и [cocoa] для (не зависящих от языка) вопросов о платформах или рамки.