Flutter Firestore, как получить документы, содержащие значение внутри массива - PullRequest
0 голосов
/ 30 марта 2019

У меня есть данные json, хранящиеся в firestore, как показано ниже, id документа - это дата в формате ddmmyyyy

29032019:{
   morning:[{
      person : 1,
      name:'abc',
      cancelled:false
     },
     {
      person : 2,
      name:'abc',
      cancelled:false
    }
  ],
  afternoon:[{
      person : 3,
      name:'abc',
      cancelled:false
   },
   {
      person : 4,
      name:'abc',
      cancelled:false
   }
 ]
}
30032019:{
   morning:[{
      person : 5,
      name:'abc',
      cancelled:false
     },
     {
      person : 2,
      name:'abc',
      cancelled:false
    }
  ],
  afternoon:[{
      person : 6,
      name:'abc',
      cancelled:false
   },
   {
      person : 7,
      name:'abc',
      cancelled:false
   }
 ]
}

здесь 9032019 и 30032019 - идентификаторы документов.Как я могу получить документы, которые содержат человека в утренних и дневных массивах, на данный момент я могу получить документы, используя следующие 3 предстоящие даты, и перебрать утренние и дневные массивы, чтобы проверить, существует ли человек с идентификатором 6 вколлекция или нет.

1 Ответ

1 голос
/ 30 марта 2019

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

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

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