2015-12-04 4 views
1

не видят jsfiddle: http://jsfiddle.net/237ur2tf/14/Firebase orderByChild equalTo зависает, когда нет данных

coinref.orderByChild("uuid").equalTo("xx")... 

запрос отлично работает, когда есть совпадение в базе данных. Когда нет совпадения, не вызывается функция обратного вызова или ошибки.

Я делаю что-то не так? ... Каким было бы это?

Большое спасибо. Pat/

ответ

2

Это ожидаемое поведение. Соответствующий фрагмент из вашой скрипки немного больше:

// Get by child uuid AND uuid exists 
coinsRef.orderByChild("uuid") 
     .equalTo("4D4B2118-0435-439C-BA7C-99B9BD0DA7F4") 
     .on('child_added', function(snapshot) { 

Этого код говорит, что «когда есть (существующий или новый) ребенок добавил к этому запросу, зовите меня с снимком». Поскольку нет ребенка, событие child_added не срабатывает.

Если вы хотите проверить , если есть значение, вы должны использовать value событие:

// Get by child uuid AND uuid exists 
coinsRef.orderByChild("uuid") 
     .equalTo("4D4B2118-0435-439C-BA7C-99B9BD0DA7F4") 
     .on('value', function(snapshot) { 
    console.log("found Coin: 4D4B2118-0435-439C-BA7C-99B9BD0DA7F4"); 

Если вы хотите сделать что-нибудь с конкретной монеты, вам нужно forEach() в обратный вызов:

snapshot.forEach(function(child) { 
    console.log("The coin has value: "+child.val()); 
}) 

Есть ли причина, по которой вы не можете хранить монеты по их uuid? Похоже, что это уже универсально уникальный идентификатор; поэтому, если их можно сохранить с помощью этого ключа, поиск будет намного дешевле:

coinsRef.child("4D4B2118-0435-439C-BA7C-99B9BD0DA7F4") 
     .on('value', function(snapshot) { 
    console.log("The coin has value: "+snapshot.val()); 
}) 
+0

Право! Решение заключается в использовании «значения» для обнаружения недопустимого идентификатора. snapshot возвращаемое значение может быть проверено. «child_added» не запускается, поскольку нет значения. Есть причина не использовать uuid в качестве ключа ... но здесь дело не в этом :) Большое спасибо за помощь. –

+0

@Fran van Puffelen, что было бы эквивалентом для java? – Antonio

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