慕碼人2483693
2023-06-09 15:57:02
我在文檔中找不到任何內(nèi)容,但說我執(zhí)行了一個查詢,例如const snapshot = await jobsRef.where('status', '==', STATUS_ACTIVE).get();可以排除某些字段不返回這個“工作”?“工作”文檔中的某些字段應(yīng)保持私有。
2 回答

侃侃爾雅
TA貢獻1801條經(jīng)驗 獲得超16個贊
對于 Web 和移動客戶端,無法從查詢中排除某些字段。當您查詢文檔時,它將始終提供所有匹配文檔的所有字段。安全規(guī)則不會幫助你。
對于有公共字段和私有字段要分開的情況,您應(yīng)該制作兩個不同的集合并使用不同的安全規(guī)則保護它們。您可以選擇兩個頂級集合:
/jobs-public/{id} /jobs-private/{id}
或者您可以使用子集合:
/jobs/{id}/public/{id} /jobs/{id}/private/{id}
在任何一種情況下,您都必須確保用戶只能閱讀您的要求允許他們閱讀的文檔。

寶慕林4294392
TA貢獻2021條經(jīng)驗 獲得超8個贊
無法檢索某些字段,正如 Doug 上面提到的,您可以將不同集合或子集合中的字段分開。
如果您不想重新設(shè)計數(shù)據(jù)庫結(jié)構(gòu),您也可以使用 Firebase Cloud Functions,您可以在其中獲取所需的文檔、過濾接收到的數(shù)據(jù)并將所需的字段返回給用戶。因此,用戶也將無法看到完整的文檔。
盡管這顯然會增加您的成本,因為您將使用 Cloud Functions。盡管過濾和驗證誰在檢索數(shù)據(jù)確實很有效。
添加回答
舉報
0/150
提交
取消