![](/img/trans.png)
[英]How to get list of document from firestore in flutter based on field value
[英]How to get a field value from a Document in Firestore?
所以,我已经学会了如何在 firebase 火库云中创建和更新文档,但是我在读取数据时遇到了问题。 附件是我查找“photourl”字段值的代码:
String photoy;
Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get().then((DocumentSnapshot ds){
photoy=ds.data['photourl'];
});
setState(() {
photourldisplay=photoy;
});
但是,在运行我的程序时,photourldisplay 的值似乎没有改变,并且在运行时仍然是 null。 这意味着我检索此“photourl”字段的代码有问题。 有人可以帮我检索 firebase 文档中的字段吗?
photoy
不包含您期望的值,因为 Firestore 查询是异步的。 get() 立即返回,并在查询完成后的一段时间后调用回调。 无法保证查询可能需要多长时间。 如果您想将photoy
的值传递给其他东西,您将不得不等到回调完成,仅在该回调中使用它。
Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get().then((DocumentSnapshot ds){
photoy=ds.data['photourl'];
setState(() {
photourldisplay=photoy;
});
});
你的代码很好,你只需要等待结果:
void yourVoid () async {
String photoy;
await Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get().then((DocumentSnapshot ds){
photoy=ds.data['photourl'];
});
setState(() {
photourldisplay=photoy;
});
}
编辑:正如@Doug Stevenson 所说,有两种解决方案:
void yourVoid () async {
DocumentSnapshot ds = await Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get();
String photoy = ds.data['photourl'];
setState(() {
photourldisplay=photoy;
});
}
和:
Firestore.instance.collection('userdata').document('sepDGexTRuRkpx1WQYylDDmUI573')
.get().then((DocumentSnapshot ds){
photoy=ds.data['photourl'];
setState(() {
photourldisplay=photoy;
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.