[英]android studio only checks and retrieve the last added value in firebase database
[英]Android studio Firebase database queries selected value
我在嘗試查詢數據庫中的某些信息時遇到麻煩,下圖恢復了我要獲取的信息,我正在嘗試獲取“ productId”
這是我的數據庫的樣子:
https://i.stack.imgur.com/JhJNs.png
實際上,我試圖獲得此值以便為其設置條件。 我正在嘗試發送通知,僅當選擇了productId = 02時,這是我的代碼
if (request.getFoods().isEmpty()) {
Toast.makeText(Cart.this, "Your cart is empty", Toast.LENGTH_SHORT).show();
} else{
final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests");
final Query data = tokens.orderByChild("productId").equalTo("02"); // get all node with isServerToken
data.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String order_number = String.valueOf(System.currentTimeMillis());
requests.child(order_number).setValue(request);
sendNotificationOrder(order_number);
Toast.makeText(Cart.this, "Notification sent", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
感謝您的幫助!
實際上,您的上述代碼無法與orderByChild()
使用。 如果你在你的多個項目foods
節點與他們的父節點是0
, 1
等,並要檢查他們productId
,則僅可以做到這一點。
對於這一點,你就必須讓家長兒童foods
和調用orderByChild()
就可以了,為productId
。 代碼看起來像這樣:
final DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Requests").child(id).child("foods");
tokens.orderByChild("productId").equalTo("02").addSingleValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// do what you want
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Do something for errors, don't ignore
}
但是,如果您的數據庫結構具有不同的父節點,並且在它與您要從中檢索數據的節點之間還有一個中間節點,那么上述代碼將無法使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.