【发布时间】:2020-05-01 08:16:26
【问题描述】:
我尝试使用此代码从 Cloud Firestore 获取一些列表
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 运算符存在一些问题。
有谁知道为什么这不起作用?我很乐意为您提供任何帮助。
【问题讨论】:
-
顺便说一句,
query.buildArguments()已被弃用并替换为query.paramaters。
标签: firebase flutter dart google-cloud-firestore