Как получить строку в определенном ключе в Firebase

У меня есть данные о базе данных, как показано ниже:

chats
| 
|
+ - - -simplelogin48simplelogin50
|    
|     
|
+ - - simplelogin50simplelogin48 
|
|     
|   
+ - - -simplelogin48simplelogin50

Теперь я хочу получить данные чата, которые содержат "simplelogin 48". Это возможно?

1 ответ

Решение

Нет, Firebase не поддерживает оператор содержимого в своих запросах. Firebase обеспечивает queryStartingAtValue а также queryEndingAtValue операторы для выбора диапазона ключей, но оба они основаны на начале ключа (или на значении или приоритете свойства, если вы заказали эти ключи). См. Этот раздел документации Firebase для iOS, в котором объясняются запросы.

Итак:

[[[[ref queryOrderedByKey] queryStartingAtValue:@"simplelogin48"] queryEndingAtValue:@"simplelogin48"]

Вы получите:

+ - - -simplelogin48simplelogin50
+ - - -simplelogin48simplelogin50

Но не:

+ - - simplelogin50simplelogin48 

Обойти это можно путем создания так называемого индексного узла, который в этом случае просто перечисляет идентификаторы чата для каждого пользователя:

chats_by_user
  |    
  + - - simplelogin48
  |  |     
  |  + - - simplelogin48simplelogin50 
  |  |     
  |  + - - simplelogin48simplelogin49 
  |  |     
  |  + - - simplelogin50simplelogin48 
  |    
  + - - simplelogin49
  |  |     
  |  + - - simplelogin48simplelogin49 
  |    
  + - - simplelogin50
    |     
    + - - simplelogin50simplelogin48 
    |     
    + - - simplelogin48simplelogin50 

С этой структурой вы можете просто получить доступ chats_by_user/simplylogin48 чтобы получить все ссылки на все чаты для этого пользователя.

Другие вопросы по тегам