2016-08-13 5 views
0

Я перемещаю приложение Android из rdbms в firebase и как новичок в Firebase. Я борюсь с некоторыми запросами.Комплекс пожарной базы «содержит» запросы

У меня есть ниже БД в FB:

{ 
    "posts" : { 
    "-KNnbTHJGm83zpSELWwB" : { 
     ".priority" : "6gydj46kg0", 
     "branch" : "Branch", 
     "category" : "Categoria", 
     "expiration" : "24h", 
     "g" : "6gydj46kg0", 
     "l" : [ -23.5415083, -46.88642 ], 
     "photo" : "mPostPic_20160728192627.jpeg", 
     "price" : 10, 
     "priority" : 0, 
     "product" : "ipad", 
     "userKey" : "BNd8RP5qHoc0q7f9gn8cLjPy5Ux1", 
     "offerMessage": "Valido ate as 14:00 hs", 
     "likeCount": 0 
    } 
    } 
} 

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

Я пробовал .start() и .end(), но не работает.

ответ

0

Вы ищете функцию Firebase equalTo. Вы можете сделать что-то подобное:

Query myQuery = myFirebaseReference.child("posts") 
    .orderByChild("category") 
    .equalTo("Categoria"); 

В зависимости от версии Firebase, myFirebaseReference может быть Firebase объект или DatabaseReference.

1

Если ваш список критериев последователен, вы можете получить их с помощью startAt() и endAt(). Поскольку вы говорите, что вы уже пробовали это, либо вы сделали что-то неправильно (если в этом случае ваш код позволит вам помочь), либо критерии не последовательны.

Последний случай более вероятен и означает, что ваше желание является запросом, эквивалентным SQL WHERE category IN ("Categoria", "Categorib", "Categoric"). У Firebase нет такой операции. Вместо этого вам нужно будет выполнить несколько запросов с equalTo, чтобы выполнить результат.

В качестве альтернативы вы можете попытаться смоделировать данные по-разному, чтобы обеспечить получение сообщений по критериям за один раз. Это не всегда возможно, но если это следует из подхода, изложенного в Query based on multiple where clauses in firebase

+1

Да Франк. Это именно то, что я ищу. Я пытаюсь получить опыт работы в Firebase, но некоторые старые концепции более усложняются для реализации. Я попытаюсь изменить модель данных и посмотреть, могу ли я выполнить. Я информирую вас. –

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