簡體   English   中英

如何從 Firestore 中的文檔中獲取字段值?

[英]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 文檔中的字段嗎? Firebase 文檔 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM