新的資料庫結構
這就是我使用 FirebaseRecyclerOptions 為每個用戶顯示資料的方式。
但是我想通過使用 UID 或任何其他解決方案檢查用戶來獲取僅具有條件的特定用戶的所有子資料。
ps:由于資料庫結構已更改,此帖已多次編輯
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_pdv, container, false);
recyclerView = v.findViewById(R.id.pdv_list);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
if (user_id.equals("hZBCb9yk8ycamjoVcISjG2y4ZnI2")){
Query query = FirebaseDatabase.getInstance("https://dtechapp-94795-default-rtdb.europe-west1.firebasedatabase.app")
.getReference().child("commande").orderByChild("user_id").equalTo("hZBCb9yk8ycamjoVcISjG2y4ZnI2"); ;
FirebaseRecyclerOptions<Order> options =
new FirebaseRecyclerOptions.Builder<Order>()
.setQuery(query, Order.class)
.build();
pdvAdapter = new PdvAdapter(options);
recyclerView.setAdapter(pdvAdapter);
return v;
}
}
uj5u.com熱心網友回復:
您正在以錯誤的方式創建參考。
DatabaseReference rootRef =
FirebaseDatabase.getInstance().getReference("pdv");
DatabaseReference pdvRef = rootRef.child("user_id");
通過使用 pdvRef,您將獲得用戶 ID 的子代。
uj5u.com熱心網友回復:
當您使用以下查詢時:
Query query = FirebaseDatabase.getInstance("https://dtechapp-94795-default-rtdb.europe-west1.firebasedatabase.app")
.getReference("pdv").child("user_id");
這意味著您正在嘗試從以下位置讀取資料:
rootRef/pdv/user_id
這樣的參考實際上不存在。在您的“pdv”節點下,沒有名為“user_id”的子節點,而是一個名為“fP0LLs83MYZqX9BqYO24IX80F3Q2”的子節點。所以你要么使用:
Query query = FirebaseDatabase.getInstance("https://dtechapp-94795-default-rtdb.europe-west1.firebasedatabase.app")
.getReference("pdv").child("fP0LLs83MYZqX9BqYO24IX80F3Q2");
或者,如果用戶的 UID 來自 Firebase 身份驗證操作,則您可以簡單地使用:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
Query query = FirebaseDatabase.getInstance("https://dtechapp-94795-default-rtdb.europe-west1.firebasedatabase.app")
.getReference("pdv").child(uid);
編輯:
根據您的評論之一:
所以我想同時從所有用戶的孩子那里獲取資料。這是第一個用戶“fP0LLs83MYZqX9BqYO24IX80F3Q2”,我想讓孩子進入他體內,同時,我想從第二個用戶“hZBCb9yk8ycamjoVcISjG2y4ZnI2”那里獲取孩子并將其顯示在我的 RecyclerView 中。
并且根據您的資料庫架構,請注意您無法實作。您無法讓所有用戶都擁有這樣的架構。實時資料庫中的查詢在節點的平面串列上作業。除此之外,您在 UID 節點下有一個未知的鍵,這使得無法查詢。要解決此問題,您應該考慮洗掉樹中的一個級別,并在每個 UID 節點內添加“Amine”和“Zouaoui...”作為屬性。您的架構應如下所示:
Firebase-root
|
--- pvd
|
--- $uid
| |
| --- type: "Amine..."
| |
| --- //Other fields.
|
--- $uid
|
--- type: "Zouaoui..."
|
--- //Other fields.
代碼可能保持不變。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/336920.html
