В выборке данных, которые вы дали, нет узла под studenList
с ключом из 54ca2c11d1afc1612871624a
.
Ваши ключи: -Jh46tlaNFx_YmgA8iMJ
и -Jh474kAvoekE4hC7W3b
. Вы можете легко определить это самостоятельно по:
ref.child("studentList").orderByKey().on("child_added", function(snapshot) {
console.log(snapshot.key()); // on newer SDKs, this may be snapshot.key
});
Вы, кажется, хотите заказать узлы от их стоимости, но это не операция, которая доступна на Firebase в данный момент. Firebase может только query children by a value of a named property, key или его priority. Так что, если вы хотите изменить структуру данных:
disney
studentList
-Jh46tlaNFx_YmgA8iMJ:
name: "aaaaabbbbbbaaaa"
-Jh474kAvoekE4hC7W3b:
name: "54ce1cbec4335cd3186105dc"
Вы можете получить заказ детей по имени с:
ref.child("studentList")
.orderByChild("name")
.equalTo("54ca2c11d1afc1612871624a")
.on("child_added", function(snapshot) {
console.log(snapshot.val());
});
Просто боковой узел: если фактические значения узлов, как те, в образец, который вы предоставили, вы можете захотеть использовать значения в качестве ключей; они уже кажутся довольно уникальными для моего неподготовленного глаза.
Firebase может запрашивать у детей ** значение именованного свойства **, вы имели в виду, что ключ() не считается именем? – iamwave007
Ключ не является именованным свойством, но вы также можете заказать ключ (как и с 'orderByKey()'. То, что вы не можете сделать, это упорядочить по ** неназванному ** значению узла, как кажется что вы хотите. Если вы действительно хотите эту структуру данных, вы можете записать значение в '.priority' (см.' setPriority' в документах) и использовать 'orderByPriority'. Но это гораздо более распространено в наши дни (поскольку Firebase добавила' orderByChild'), чтобы назвать это свойство или (если оно действительно не имеет имени) использует его как сам ключ. –