2017-10-20 46 views
11

Mam dokument "użytkownik", który ma klucz o nazwie "zdjęcia". Oto tablica zapisanych ciągów, a mianowicie identyfikatory dokumentów "zdjęcia".Firestore: Zapytanie według pozycji w tablicy dokumentu

Chcę zapytać "użytkownika" za pomocą tego pola "zdjęcia": chcę wszystkich użytkowników, którzy mają ten identyfikator we właściwości "zdjęcia".

Czy to możliwe za pośrednictwem sklepu z bronią?

Odpowiedz

11

Niestety, jeszcze nie, chociaż jest na naszej mapie drogowej.

W międzyczasie trzeba korzystać z mapy, a nie w formie:

photos: { 
    id1: true 
    id2: true 
} 

Teraz można znaleźć wszystkie użytkownikom ID1 filtrując przez photos.id1 == true.

Przeczytaj więcej o odpytywaniu takich zestawów w Firebase documentation.

+4

Czy to gdzieś opublikowano tę mapę drogową? Po prostu ciekawy. –

+0

Nie jest. Zasadniczo nie mówimy o przyszłych funkcjach, ponieważ rzeczy mogą niespodziewanie wyeksponować te priorytety zmian (lub nawet wykonalność). –

+2

@DanMcGrath Czy jest jakakolwiek aktualizacja tej funkcji/mapy drogowej? –

0

Oto nieco ekspansji na odpowiedź, niektóre wydają się mylić o konieczności dokonywania indeksów dla każdego klawisza, Firestore już indeksy swoje dane dla prostych zapytań w ten sposób można zrobić proste zapytanie jak

documentReference.where('param','==','value').onSnapshot(...) 

, ale nie można wykonać złożonego zapytania, chyba że zindeksuje dane dla tych parametrów. Więc trzeba indeksów, aby móc zrobić coś takiego:

documentReference.where('param','==','value').where(..otherparams...).onSnapshot(...) 

więc tak długo, jak trzeba zdjęcia na identyfikatorze można je zapisać jako

usersCollection :      (a collection) 
    uidA:        (a document) 
     photoField:      (a field value that is a map or object) 
      fieldID1 : true    (a property of the photoField) 
      fieldID2 : true    (a property of the photoField) 
      etc ... 

i można po prostu zapytać użytkownika (s), które mają, powiedzmy, fieldID1 w ich photoField bez potrzeby tworzenia jakiegokolwiek indeksu i jak zapytanie poniżej.

firestore.doc('usersCollection/uidA').where('photoField.fieldID1','==',true).onSnapshot(...)