Firestore для запроса по значению поля массива - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь выполнить простой запрос, в котором я ищу документ, содержащий значение внутри массива объектов.

Например, посмотрите на мою структуру базы данных:

firestore db

Я хочу выполнить запрос, подобный следующему:

db.collection('identites').where("partyMembers", "array-contains", {name: "John Travolta"})

Как правильно достичь этого, возможно ли это с помощью Firestore?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Как объяснил Фрэнк в своем ответе, невозможно с помощью массива содержать запрос определенного свойства объекта, хранящегося в массиве.

Однако возможен обходной путь: на самом деле можно запросить весь объект , как показано ниже:

db.collection('identites').where("partyMembers", "array-contains", {id: "7LNK....", name: "John Travolta"})

Может быть, этот подход подойдет вам (или, может быть, нет ....).

0 голосов
/ 08 января 2019

Операции array-contains проверяют, содержит ли массив конкретное (полное) значение. Он не может проверить, содержит ли массив объектов элемент с определенным значением свойства.

Единственный способ выполнить запрос - добавить в документ дополнительное поле, содержащее только значение, по которому вы хотите запросить существование. Так, например: partyMemberNames: ["John Travolta", "Olivia Newton"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...