Проверьте наличие нескольких значений с помощью whereArrayContains в firestore android

Моя база данных выглядит так:

{
  "customers": [
    {
      "field1": "value1",
      "field2": "value2",
      "field3": "test",
      "projects": [
        "project1",
        "project2",
        "project3",
        "project4"
      ]
    },
    {
      "field1": "value1",
      "field2": "value2",
      "field3": "value3",
      "projects": [
        "project1",
        "project3"
      ]
    }
  ]
}

Теперь я хочу получить клиентов, которые содержат «проект1» и «проект2», и эти проекты назначаются динамически, поэтому whereEqualTo не показался мне вариантом, поэтому я использовал whereArrayContains следующим образом:

Query query = db.collection("customers");
query = query.whereEqualTo("field3", "test");
query.whereArrayContains("projects", "project1");

Это сработало нормально, но затем мне нужно было найти несколько проектов, поэтому я сделал это следующим образом:

Query query = db.collection("customers");
                query = query.whereEqualTo("field3", "test");
                for (int i = 0; i < selectedProjects.size(); i++) {
                    //i get a crash here:
                    query = query.whereArrayContains("projects", selectedProjects.get(i).getText());
            }

Здесь приложение разбилось, заявив:

Invalid Query. Queries only support having a single array-contains

Итак, вот где я сейчас застрял, я знаю, что мы не можем поставить несколько whereArrayContains, тогда каковы мои варианты достижения того, что я только что объяснил? Почему здесь нельзя использовать простой запрос IN, такой как sqlite?

На самом деле нет идейного решения для этого. Лучшее, что я смог придумать, это здесь: stackoverflow.com/questions/52837711/…. Всегда не стесняйтесь отправить запрос функции за разрешение нескольких whereArrayContains.

Frank van Puffelen 23.02.2019 16:05

@FrankvanPuffelen Сначала это может показаться дубликатом, но мой вопрос: как проверить два значения в одном массиве, используя один whereArrayContains?

Mayur Gajra 23.02.2019 16:10
0
2
836
0

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