2 回答

TA貢獻1806條經驗 獲得超8個贊
如果沒有集合,您將無法檢索文檔值。所以我建議將收藏名稱更改為友誼狀態。然后您可以輕松檢索文檔的字段。
它需要是這樣的:
FriendShip
---->Current User id
? ? ?--->Friendship Status
? ? ? ? ?-----> Document id
然后您可以使用orderby或Equalto函數。
上述結構的代碼。
mfirebaseFirestore.collection("Friendship").document(mCurrentUser).collection("FriendshipStatus")
? ? ? ? ? ? ? ? .whereEqualTo("RequestStatus", "Completed")
? ? ? ? ? ? ? ? .get()
? ? ? ? ? ? ? ? .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onComplete(@NonNull Task<QuerySnapshot> task) {
? ? ? ? ? ? ? ? ? ? ? ? if (task.isSuccessful()) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? for (QueryDocumentSnapshot document : task.getResult()) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Log.d("abc", document.getId() + " => " + document.getData());
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Log.d("abc", "Error getting documents: ", task.getException());
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });
筆記 :
Whereequalto
當您嘗試在集合中查找數據時有效。所以你必須查詢直到集合。然后用于whereequalto
與您的查詢類似的文檔

TA貢獻1856條經驗 獲得超5個贊
無法使用客戶端 SDK(Android、iOS、Web)列出文檔的子集合。
另一方面,“?getCollections()
Cloud Firestore服務器客戶端庫的方法列出了文檔引用的所有子集合”。
由于您似乎正在使用 Android SDK,因此您需要找到解決方法。一種可能的解決方法是將子集合名稱保存在父文檔的專用字段中。例如,您可以使用數組字段來存儲子集合的所有名稱。
當您使用 Android SDK 創建子集合的第一個文檔時,您通常會填充此字段。
如果出于某種原因,您無法從客戶端執行此操作,您可以使用云功能,它依賴于 Admin SDK,因此可以使用getCollections()
上面提到的方法。
添加回答
舉報