簡體   English   中英

如何從 Flutter 中的 Firestore 獲取值

[英]How to get values from Firestore in Flutter

我需要獲取具有子集合的 Firestore 文檔中的值。

向數據庫添加數據

另外,我嘗試完成的是在userPolls集合上,我需要根據userId添加一個帶有Id的文檔,然后創建一個 'dailyPolls' 的集合,該集合具有一個Id為當前日期但沒有 ' /' 並在其中放置我所有的數據,如下所示:

final CollectionReference userPollCollection =
      Firestore.instance.collection('userPolls');
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
    });
  }

從數據庫查詢數據

在檢索數據時,我需要訪問userPolls ,然后獲取具有Id的文檔,即userId ,然后轉到dailyPolls的集合,然后獲取具有基於當前日期的Id的文檔,而沒有 '/ ' 然后獲取其中的數據。

 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);
    });
  }

在此處輸入圖片說明

紅色方塊是路徑,藍色方塊是我需要的

我對平面數據庫很陌生。

我不確定您要使用哪些類,但這是我可以以正確格式獲取日期的最簡單方法:

final DateTime now = DateTime.now();
final DateFormat formatter = DateFormat('yyyy/MM/dd');
final String formatted = formatter.format(now);

print(formatted);

var docRef = userPollCollection
    .document(userId)
    .collection('dailyPolls')
    .document(formatted);

然后獲取狀態字段,您需要執行以下操作:

docRef.get().then((onValue) {
  print(onValue.data().status);
});

如果仍然有問題,請檢查第一個print語句的輸出以查看其值是否與您在數據庫中看到的值匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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