2014-10-19 3 views
0

Я пытаюсь простой поиск в Firebase, чтобы возвращать данные из данных Firebase, но ничего не возвращается.Firebase query не возвращает никаких результатов из базы данных

JSON СТРУКТУРА

{ 
    "-JZQzhqTI6NUQMfgHwQc" : { 
     "Divisions" : { 
      "-JZLh2UYKi5IvphLtX4I" : true, 
      "-JZLh2Uc5HhffF1ki4H1" : true 
     }, 
     "SportTypes" : { 
      "-JZLOh7KtM78I5wAL6Ua" : true 
     }, 
     "name" : "winnipegjets", 
     "nickname" : "Jets", 
     "teamname" : "Winnipeg Jets" 
    } 
} 

Мой Firebase код, чтобы сделать поиск следующая

new Firebase("https://sizzling-fire-6197.firebaseio.com/teams") 
      .startAt('Winnipeg Jets') 
      .endAt('Winnipeg Jets') 
      .once('value', function(snap) { 
       console.log('matching team is', snap.val()) 
      }); 

Но после того, как код выполнения возвращает нуль. Также есть способ поиска в определенном поле.

+0

относящиеся к http://stackoverflow.com/questions/25272919/how-to-query-firebase-for-property-with-specific-value-inside-all-children, HTTP: //stackoverflow.com/questions/23812624/firebase-where-like-search, http://stackoverflow.com/questions/11587775/database-style-queries-with-firebase, http://stackoverflow.com/questions/ 14963776/get-users-by-name-property-using-firebase и, вероятно, немало других. –

ответ

2

Похоже, у вас есть сбор команд, первый из которых находится в узле с именем -JZQzhqTI6NUQMfgHwQc (что, вероятно, было вызвано вызовом push). Он имеет имущество name со значением winnipegjets и недвижимостью teamname со значением Winnipeg Jets.

В Firebase query you can filter nodes in two ways:

  • по имени
  • по их приоритету

Ваш узел называется -JZQzhqTI6NUQMfgHwQc и имеет приоритет (который не показан в формате JSON вы публикуемую) , Это единственные два значения, которые вы можете фильтровать.

Если вы еще не используете приоритет, вы можете установить name или teamname в качестве приоритета (см. Документацию по setPriority) и фильтровать на этом.

Похоже, вы уже пытаетесь сделать недвижимость name уникальной. В этом случае, вы могли бы рассмотреть вопрос о создании структуры следующим образом:

{ 
    "winnipegjets" : { 
     "Divisions" : { 
      "-JZLh2UYKi5IvphLtX4I" : true, 
      "-JZLh2Uc5HhffF1ki4H1" : true 
     }, 
     "SportTypes" : { 
      "-JZLOh7KtM78I5wAL6Ua" : true 
     }, 
     "nickname" : "Jets", 
     "teamname" : "Winnipeg Jets" 
    } 
} 

Код для того что бы что-то вроде:

var ref = new Firebase('https://sizzling-fire-6197.firebaseio.com/teams'); 
ref.child('winnipegjets').set(...); 
0

Если вы не устанавливать приоритет. Затем вам нужно заказатьByChild, inorder для firebase, чтобы вернуть результат. В вашем случае:

new Firebase("https://sizzling-fire-6197.firebaseio.com/teams") 
      .orderByChild('teamname') 
      .startAt('Winnipeg Jets') 
      .endAt('Winnipeg Jets') 
      .once('value', function(snap) { 
       console.log('matching team is', snap.val()) 
      }); 
Смежные вопросы