Я пытаюсь получить некоторые списки из облачного пожарного хранилища с этим кодом
final User user = UserUtils.currentUser(context);
final List<String> memberLists = user.memberLists.toList();
final List<String> ownedLists = user.ownedLists.toList();
final List<String> visibleListsIds = memberLists + ownedLists;
final Query query = (sharedCollection.where(FIELD_LIST_ID, whereIn: visibleListsIds));
log.d("queryPath: ${query.reference().path}");
log.d("buildArguments: ${query.buildArguments()}");
return query.snapshots().map((QuerySnapshot querySnapshot) {
return querySnapshot.documents
.map(
(document) {
log.d("document: ${document.documentID}");
return _getSerializers()
.deserializeWith(WishList.serializer, document.data);
},
)
.where((value) => value != null)
.toList();
});
Когда я это делаю, я не получаю никаких журналов с «document: ...», потому что очевидно, что запрос не получает документы. Вот buildArguments запроса:
buildArguments: {where: [[listId, in, [IIAY56KF0mSCx1WwCXaV]]], orderBy: [], path: WISHLISTS}
Примечание: Wishlists - это правильный путь, а listId также правильный.
Если я изменю строку запроса на: final Query query = sharedCollection;
, она просто выплевывает все списки, поэтому должна работать теоретически. Я думаю, что есть проблема с оператором whereIn
.
Кто-нибудь знает, почему это не работает? Я рад за любую помощь.