2017-02-23 91 views
0
"vehicles" : { 
      "-KbwlIGLm6dxffPJoJJB" : {    
      "fuel" : "petrol", 
      "groups" : { 
       "-KdWh_9KVF16efcSdrji" : true, 
       "-Kdb1G720MDgbuR3nPBL" : true 
      }, 
      "make" : "Honda", 
      "model" : "City", 
      "name" : "Honda City",    
      "speed_limit" : 100, 
      "tank_size" : 32, 
      "type" : "car" 
      }, 
      "-KdU-BlfEdqzKxFjGI3D" : {    
      "fuel" : "petrol", 
      "groups" : { 
       "-KdWh_9KVF16efcSdrji" : true 
      }, 
      "make" : "yamaha", 
      "model" : "FZ", 
      "name" : "Yamaza FZ",    
      "speed_limit" : 60, 
      "tank_size" : 12, 
      "type" : "bike" 
      }   
     } 

Я хочу получить результаты где groups имеет -KdWh_9KVF16efcSdrji, а ключ должен быть равен true.Как запросить Firebase на основе логического значения?

vehicles_ref.child("groups").orderByChild("-KdWh_9KVF16efcSdrji").equalTo(true).on 
("value", function (snapshot) { 
    console.log(snapshot.val()); 
}); 

Но в настоящее время я получаю NULL для вышеуказанных критериев.

я изменил запрос

vehicles_ref.orderByChild("/groups/-KdWh_9KVF16efcSdrji").equalTo(true).on("value", function (snapshot) { 
    console.log(snapshot.val()); 
}); 

теперь получает результаты, но теперь получает предупреждение

FIREBASE ПРЕДУПРЕЖДЕНИЕ: Использование неопределенного индекса. Рассмотрим добавление «.indexOn»: „группы/-KdWh_9KVF16efcSdrji“ в/транспортных средств к вашим правилам безопасности для лучшей производительности

как добавить индекс, чтобы удалить это предупреждение?

+0

Вы пытаетесь поставить автомобили в категорию. Хотя вы можете добавить индексы для этого, это означает, что вам нужно добавить новый индекс для каждой категории. Вместо этого взгляните на мой ответ здесь, чтобы получить лучший способ моделирования категорий: http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value –

+0

Мы работаем большая система с этим предупреждением. Мы все прекрасно. Это не ошибка. –

ответ

0

У меня также было это предупреждение о том, что я отправил firebase, и я отфильтровывал запросы в запросах, ищущих элементы с одинаковым идентификатором. Предупреждающее сообщение «.indexOn» относится к правилу в вашей базе данных, которая должна быть проверена путем добавления «.indexOn» к группе, которую вы пытаетесь сортировать элементы в.

{ 

    "scores": { 

    "bruhathkayosaurus" : 55, 
    "lambeosaurus" : 21, 
    "linhenykus" : 80, 
    "pterodactyl" : 93, 
    "stegosaurus" : 5, 
    "triceratops" : 22 
     } 
} 

Поскольку имена динозавров это только ключи. мы можем добавить .value правила нашего узла/оценку оптимизировать наши запросы:

{ 

    "rules": { 

    "scores": { 
     ".indexOn": ".value" 
     } 
     } 
} 

вы можете использовать следующую ссылку: https://firebase.google.com/docs/database/security/indexing-data?hl=es-419