2015-02-01 5 views
6

Так что я пытаюсь найти данные "aaaaabbbbbbaaaa" в этой структуре:firebase извлечения данных с помощью orderByKey() и equalTo()

disney 
studentList 
-Jh46tlaNFx_YmgA8iMJ: "aaaaabbbbbbaaaa" 
-Jh474kAvoekE4hC7W3b:"54ce1cbec4335cd3186105dc" 

Я использовал этот

var ref = new Firebase("https://disney.firebaseio.com/"); 
ref.child("studentList").orderByKey().equalTo("54ca2c11d1afc1612871624a").on("child_added", function(snapshot) { 
    console.log(snapshot.val()); 
}); 

Но я ничего не получил. Что случилось? Что я должен использовать?

ответ

16

В выборке данных, которые вы дали, нет узла под 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()); 
    }); 

Просто боковой узел: если фактические значения узлов, как те, в образец, который вы предоставили, вы можете захотеть использовать значения в качестве ключей; они уже кажутся довольно уникальными для моего неподготовленного глаза.

+0

Firebase может запрашивать у детей ** значение именованного свойства **, вы имели в виду, что ключ() не считается именем? – iamwave007

+0

Ключ не является именованным свойством, но вы также можете заказать ключ (как и с 'orderByKey()'. То, что вы не можете сделать, это упорядочить по ** неназванному ** значению узла, как кажется что вы хотите. Если вы действительно хотите эту структуру данных, вы можете записать значение в '.priority' (см.' setPriority' в документах) и использовать 'orderByPriority'. Но это гораздо более распространено в наши дни (поскольку Firebase добавила' orderByChild'), чтобы назвать это свойство или (если оно действительно не имеет имени) использует его как сам ключ. –

Смежные вопросы