在firebase中的嵌套集合中查询文档值
我需要从Firebase中具有此架构的文档中获取值:在firebase中的嵌套集合中查询文档值,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我需要从Firebase中具有此架构的文档中获取值: COLLECTION => DOCUMENT => COLLECTION => DOCUMENT userPolls => userId => dailyPolls => 20200825 => pollDate: "2020/08/25" status: "
COLLECTION => DOCUMENT => COLLECTION => DOCUMENT
userPolls => userId => dailyPolls => 20200825 => pollDate: "2020/08/25"
status: "Under PUM"
statusCode: "pum"
uid: "zwQnrrBdNCemWyXEW2LHmw8LejA2"
这是我的尝试。但我想我在《颤栗》中弄错了
final CollectionReference userPollCollection =
Firestore.instance.collection('userPolls');
Future getPoll() async {
final DateTime now = DateTime.now();
final DateFormat formatter = DateFormat('yyyy/MM/dd');
final String formatted = formatter.format(now);
var pollDate = formatted;
var docRef = await applicationUser
.document(userId)
.collection('dailyPolls')
.document(pollDate);
docRef.get().then((onValue) => {print(onValue.data['status'])});
}
我知道这是不对的。你能告诉我怎么做吗?多谢各位
编辑
以下是我向firestore db添加数据的方式,仅供参考:
Future setPoll(UserPoll userPoll) async {
var dt = userPoll.pollDate.replaceAll('/', '');
return await userPollCollection
.document(userId)
.collection('daillyPolls')
.document(dt)
.setData({
'uid': userId,
'pollDate': userPoll.pollDate,
'status': userPoll.status,
'statusCode': userPoll.statusCode
});
}
这就是我试图得到它的方式
Future getPoll() async {
final DateTime now = DateTime.now();
final DateFormat formatter = DateFormat('yyyy/MM/dd');
final String formatted = formatter.format(now);
var pollDate = formatted;
var dt = pollDate.replaceAll('/', '');
var docRef = userPollCollection
.document(userId)
.collection('dailyPolls')
.document(dt);
docRef.get().then((onValue) {
print(onValue.data);
});
}
}
如果我在Peter Haddad的帮助下使用此代码,则在打印
结果时会得到一个空值。data
您必须执行以下操作:
var docRef = Firestore.instance.collection("userPolls").document(userId).collection('dailyPolls').where("pollDate", isEqualTo: pollDate);
var result = await docRef.getDocuments();
result.documents.forEach((result) {
print(result.data);
});
});
由于
pollDate
是文档中的一个属性,因此您可以使用where()
方法查询并获取文档Sir,请参见我的编辑。我想你的帮助使我更接近解决办法。但是还没有。你为什么不按照答案中写的那样使用where