我在Firestore中有一个名为“trip”的集合。数据格式是这样的
我正在尝试使用以下代码访问该Collection的文档。
第一种方式
try {
Firestore.instance
.collection("trips")
.where("createdByName", isEqualTo: "Suresh")
.snapshots
.listen((data) => print('Firestore response1: ${data.documents}'));
} catch (e){
print('Caught Firestore exception1');
print(e);
}
第二种方式
try {
Firestore.instance.collection("trips").where("createdByName", isEqualTo: "Suresh").getDocuments().then((data) {
print('Firestore response2: , ${data.documents}');
});
} catch (e){
print('Caught Firestore exception2');
print(e);
}
但是,上述两种方式都不起作用。不知道我做错了什么。
每当我从查询中删除where("createdByName", isEqualTo: "Suresh")
部分时,我注意到的一件事情就是正常工作。但是,当我包含该部分查询时,返回一个空结果。
答案 0 :(得分:1)
我不确定屏幕截图是否准确,但看起来您也有trip
节点。这会将层次结构设为trips.trip.createdByName
,不是吗?如果是这样,where
子句可能是错误的。
答案 1 :(得分:0)
好的,经过两天让我的大脑因这个愚蠢的事情而破碎......这就是问题的答案...... .where('trip.createdByName', isEqualTo: "Suresh")
而且,完整的查询就是这样......
第一种方式
Firestore.instance.collection('trips')
.where('trip.createdByName', isEqualTo: "Suresh")
.snapshots.listen(
(data){
data.documents.forEach((doc) => print( 'Firestore response1 : ${doc.data.toString()}' ));
}
);
第二种方式
Firestore.instance.collection("trips")
.where("trip.createdByName", isEqualTo: "Suresh")
.getDocuments().then((string) {
string.documents.forEach((doc) => print("Firestore response2: ${doc.data.toString()}" ));
});
希望,这将是一个帮助。 :)