Флаттер, где случай не работает - PullRequest
0 голосов
/ 19 мая 2019

Возможно ли получить значение на основе нескольких идентификаторов документов?

CollectionReference col1 =  Firestore.instance
        .collection('service');
     col1.where("title", isEqualTo:"Ac replaciment")
    .where("title",isEqualTo:"Oil Service")
        .getDocuments()

Этот код не дает никакого результата

 CollectionReference col1 =  Firestore.instance
            .collection('service');
         col1.where("title", isEqualTo:"Ac replaciment")

            .getDocuments()

Этот код я получил результат
Но у меня есть заголовок и с "Ac replaceciment" и с "Oil Service", но когда я звоню жестче, это не дает результата
Мне нужен запрос, например, где title =="Oil Service" or title =="Ac replaciment" Как это сделать в FireStore с флаттером



Когда я запускаю этот код, он возвращает все данные с сервера

CollectionReference col1 = Firestore.instance.collection('service');

    col1.where("title", isEqualTo: "Ac replaciment");

    col1.getDocuments().

но мне нужно получить результат, только если title=="Ac replaciment" почему возникла эта проблема? Какой правильный код?

1 Ответ

1 голос
/ 19 мая 2019

Я могу придумать два решения.

1.Нажмите два отдельных запроса и объедините результат.

Это может привести к более длительному извлечению данных при отправке двух отдельных запросов на сервер.

CollectionReference col1 = Firestore.instance.collection('service');
final acReplacimentList = await col1.where("title", isEqualTo: "Ac replaciment").getDocuments();
final oilServiceList = await col1.where("title", isEqualTo: "Oil Service").getDocuments();
return acReplacimentList.documents.addAll(oilServiceList.documents);

2.Локальная фильтрация документов.

Возможно, это более быстрое решение, но оно предоставит все другие ненужные документы.

CollectionReference col1 = Firestore.instance.collection('service');
final allList = await col1.getDocuments();
return allList.documents.where((doc) => doc["title"] == "Ac replaciment" || doc["title"] == "Oil Service");

ОБНОВЛЕНО

3.Использовать моментальные снимки запросов

CollectionReference col1 = Firestore.instance.collection('service');
final snapshots = col1.snapshots().map((snapshot) => snapshot.documents.where((doc) => doc["title"] == "Ac replaciment" || doc["title"] == "Oil Service"));
return (await snapshots.first).toList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...