首頁 > web前端 > js教程 > 如何檢索 Cloud Firestore 中的子集合名稱清單?

如何檢索 Cloud Firestore 中的子集合名稱清單?

Susan Sarandon
發布: 2024-11-29 21:07:11
原創
674 人瀏覽過

How Can I Retrieve a List of Subcollection Names in Cloud Firestore?

存取Cloud Firestore 中的子集合名稱

在文件中列出子集合是組織和導航儲存在Cloud Firestore 分層結構中的數據的常見要求。但是,在客戶端 SDK(包括 Web、iOS 和 Android)中,不直接支援檢索完整的子集合清單。

客戶端限制:

如官方文件所述,「使用行動/Web 用戶端程式庫無法擷取集合清單。」此設計選擇旨在透過限制子集合名稱的存取來增強安全性,主要用於在受信任的伺服器環境中執行的管理任務。

在客戶端 SDK 中,存取文件僅傳回欄位名稱和值,不包括任何子集合名稱。例如,以下程式碼片段將僅記錄欄位名稱,而不記錄子集合名稱:

rootRef.doc('aDocument').get()
  .then(doc => {

    // only logs [ "someField", "anotherField" ], no collections
    console.log( Object.keys(doc.data()) )
  })
登入後複製

伺服器端解決方案:

但是,在伺服器中支援側SDK(例如Node.js)存取子集合名稱。對於 Node.js,ListCollectionIds 方法提供了一種檢索文件中子集合名稱的方法。

var firestore = require('firestore.v1beta1');

var client = firestore.v1beta1({
  // optional auth parameters.
});

// Iterate over all elements.
var formattedParent = client.anyPathPath("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]");

client.listCollectionIds({parent: formattedParent}).then(function(responses) {
    var resources = responses[0];
    for (var i = 0; i < resources.length; ++i) {
        // doThingsWith(resources[i])
    }
})
.catch(function(err) {
    console.error(err);
});
登入後複製

此方法傳回表示指定文件中子集合名稱的字串陣列。

替代方法:

如果直接存取子集合名稱在客戶端環境中至關重要,請考慮重構數據,以便可以從文件結構中邏輯推斷或派生子集合名稱。這種方法可以讓您優雅地解決該限制。

以上是如何檢索 Cloud Firestore 中的子集合名稱清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板