![](/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.