簡體   English   中英

如果我不知道文檔 ID,是否可以使用 flutter 從 firebase 的子集合中的文檔中獲取數據?

[英]Can I get data from a document in a sub-collection from firebase using flutter if I don't know the document ID?

我有一個名為 users 的集合,其中在注冊時創建了一個文檔,文檔 ID 與 userID 相同(由雲 Firestore 自動生成)

在用戶的特定文檔中,我創建了一個名為“addresses”的子集合。 用戶可以存儲任意數量的地址,並將它們保存為該集合中的單個文檔。

在我的應用程序中,我可以添加一個新地址,然后將其與他/她添加的所有其他地址一起顯示在列表中(這是通過閱讀“地址”子集合中的每個文檔來完成的)

注意:子集合中的每個新文檔都有一個自動生成的 ID 分配給它。

我的問題是,有沒有辦法讓我在不知道其 documentID 的情況下閱讀此子集合中的特定文檔,如果是這樣,我是否只能編輯/刪除這個特定文檔。

(例如:用戶 A 的文檔有三個地址,它們都作為單獨的文檔存儲在“地址”子集合中。用戶 A 想從這三個文檔中編輯/刪除文檔編號 2。我將如何讓他查看和編輯/刪除該文件)。

我對 Flutter 和 Firebase(2 周前開始)非常陌生,所以如果我的問題沒有意義,我很抱歉:3。

謝謝!

我弄亂了我的代碼並搜索了一些解決方案,並想出了一種訪問文檔的方法。 對於其他有相同查詢的人,我會盡可能簡要地解釋我所做的事情。

基本上,我沒有參考文檔 ID,因為它是在我通過 flutter 代碼向文檔添加數據時自動生成的:

if (_formKey.currentState!.validate()) {
     FirebaseFirestore.instance
        .collection('users')
        .doc(documentId)
        .collection('pickup_addresses')
        .doc()
        .add({
              'address': _addressController.text,
              'timestamp': DateTime.now().millisecondsSinceEpoch,
   });
}

正如@Frank van Puffelen 在上面的評論中所建議的那樣,我需要能夠唯一標識文檔的東西才能檢索其數據。 出於這個原因,我創建了一個 String 類型的變量,並在其中存儲了一個唯一生成的文檔 ID。 然后我創建了一個具有相同 ID 的文檔,並將其存儲在這個新文檔的一個字段中:

  String id = FirebaseFirestore.instance
      .collection('usres')
      .doc(documentId)
      .collection('pickup_addresses')
      .doc()
      .id;

  if (_formKey.currentState!.validate()) {
    FirebaseFirestore.instance
        .collection('users')
        .doc(documentId)
        .collection('pickup_addresses')
        .doc(id)
        .set({
             'address': _addressController.text,
             'timestamp': DateTime.now().millisecondsSinceEpoch,
             'docID': id
    });
  }

我知道這可能不是完美的解決方案,並且可能有更簡單的方法來解決這個問題。 如果是這樣,我很想知道我能做些什么不同的事情。

我希望這個解決方案可以幫助那些被困在同一個地方連續幾個小時的人!

謝謝!

暫無
暫無

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

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