#flutter #google-cloud-firestore
#flutter #google-облако-firestore
Вопрос:
У меня есть данные json, хранящиеся в firestore, как показано ниже, идентификатор документа — это дата в формате 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 являются идентификаторами документа. Как я могу получить документы, которые содержат человека внутри массивов morning и afternoon, пока я мог бы сделать, это извлечь документы, используя следующие 3 предстоящие даты, и выполнить итерацию по массивам morning и afternoon, чтобы проверить, существует человек с идентификатором 6 в коллекции или нет.
Комментарии:
1. вы можете добавить код, который вы используете
Ответ №1:
С Firestore вы не можете искать поля объектов внутри массивов, как сейчас. Вы можете выполнять поиск в массивах только по точному содержимому их элементов.
Это означает, что вам нужно будет перенести значения для поиска в новое поле, доступное для поиска. Если вы выполняете поиск по person
полю, вы могли бы создать новое поле массива в вызываемом документе, people
которое содержит только целые числа каждого пользователя, а затем использовать запрос arrayContains, чтобы найти их.