Запрос коллекции группы Firestore, используя Flutter - PullRequest
0 голосов
/ 07 октября 2019

Я новичок в базе данных Firestore. Я использую приложение, используя флаттер и Firestore. Структура базы данных для моего приложения выглядит следующим образом:

Rooms --Room1-----Reservations.....reservation dates
                              .....reservation dates
        Room2-----Reservations.....reservation dates
        Room3
        Room4-----Reservations.....reservation dates
        Room5-----Reservations.....reservation dates
                              .....reservation dates
                              .....reservation dates

'Комнаты' - это коллекция уровня 1, которая содержит все детали комнаты. Каждая из данных комнаты содержит коллекцию «Бронирование», в которой хранятся все детали бронирования (check_in и check_out date) для этой комнаты. Теперь я хочу получить список номеров, которые доступны в определенный промежуток времени. Как работать с «запросом сбора группы» для этого требования? Или можно сделать то же самое с помощью «запроса о групповом сборе»?

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Теперь я хочу получить список номеров, доступных на определенный промежуток времени.

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

Если бы вы сохранили доступные слоты в коллекции Reservations каждой комнаты, вы могли бы выполнять запросы по всемReservations коллекций, чтобы получить доступные слоты во всех комнатах. Но обратите внимание, что результатом этого запроса являются документы из Reservations, а не отдельные комнаты;вам нужно будет загрузить каждую комнату отдельно, если вам нужна информация из этого.

В качестве альтернативы, вы можете сохранить список еще доступных слотов в каждом документе комнаты. При этом вы можете выполнить обычный запрос по всем комнатам, чтобы увидеть, какие из них еще доступны, а затем выполнить обновление документа комнаты и его коллекции Reservations в транзакции.

0 голосов
/ 07 октября 2019

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

class SearchService {
Future<QuerySnapshot> getRoomsData() async {
return await Firestore.instance
    .collection('rooms')
    .getDocuments();
 }
}

Затем получите этот снимок и выполните другой запрос. @override void initState () {_getSnapShots ();super.initState ();}

  _getSnapShots() {
List<String> list = List<String>();
SearchService().getRoomsData().then((QuerySnapshot snapshot){
  snapshot.documents.map((DocumentSnapshot docs){
    docs.reference.collection('Reservations').getDocuments().then((QuerySnapshot snapshot){
      snapshot.documents.map((DocumentSnapshot docs){
        list.add(docs.data['reservation dates']);
      }).toList();
    });
  }).toList();
});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...