Firestore не может использоваться для запроса базы данных на основе индекса элемента, существующего в массиве.Это правда, что вы не можете связывать более одного array-contains
вызовов в запросе, но есть другой обходной путь, который может помочь вам достичь того же.Поэтому необходимо изменить структуру вашей базы данных.Поэтому вместо использования массива вы можете использовать карту, и ваша схема должна выглядеть примерно так:
Firestore-root
|
--- messages (collection)
|
--- users (map)
|
--- user1ID: true
|
--- user2ID: true
Теперь такой запрос будет отлично работать:
QuerySnapshot querySnapshot = await sl.get<FirebaseAPI>().getFirestore()
.collection('messages')
.where('users.user1ID',isEqualTo: true)
.where('users.user2ID',isEqualTo: true)
.getDocuments();