Это ожидаемое поведение. Соответствующий фрагмент из вашой скрипки немного больше:
// 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());
})
Право! Решение заключается в использовании «значения» для обнаружения недопустимого идентификатора. snapshot возвращаемое значение может быть проверено. «child_added» не запускается, поскольку нет значения. Есть причина не использовать uuid в качестве ключа ... но здесь дело не в этом :) Большое спасибо за помощь. –
@Fran van Puffelen, что было бы эквивалентом для java? – Antonio