Firestore получить, где предикат? - PullRequest
0 голосов
/ 26 июня 2018

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

Что-то вроде:

 var { docs } = await admin
            .firestore()
            .collection('submissions')
            .where((x)=> x.tags.contains('mytag'))
            .get();

Возможно ли это?

1 Ответ

0 голосов
/ 26 июня 2018

Вы не можете (пока) запрашивать элементы, в которых массив содержит определенное значение. См. Документацию Firestore по работе с массивами, списками и наборами , в которой рекомендуется вместо этого смоделировать теги как:

tags: {
  mytag: true,
  myothertag: true
}

А затем запросить его с помощью:

db.collection('submissions')
    .where('tags.mytag', '==', true)
    .get()
    .then(() => {
        // ...
    });
)

Я также рекомендую прочитать мой ответ на Запрос Firebase, если child of child содержит значение , которое содержит другой пример. Хотя это относится к базе данных Firebase Realtime, здесь применяется та же логика.

Есть работа, которая позволяет запрашивать массив для значения, как вы делаете. Но, как обычно: никаких обещаний о том, когда это будет доступно, не требуется, поэтому следите за примечаниями к выпуску для обновлений Firestore.

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