Моя база данных выглядит так:
{
"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?
@FrankvanPuffelen Сначала это может показаться дубликатом, но мой вопрос: как проверить два значения в одном массиве, используя один whereArrayContains?
На самом деле нет идейного решения для этого. Лучшее, что я смог придумать, это здесь: stackoverflow.com/questions/52837711/…. Всегда не стесняйтесь отправить запрос функции за разрешение нескольких
whereArrayContains.