2017-07-20 131 views
1

Firebase數據庫節點「memories /」包含Memory {String name; int cost; ...}我需要獲取具有特定「名稱」字段的對象(例如「party」),並在其他情況下刪除它們或更改「cost」字段值。 我已經試過這...Android Firebase:如何更改具有特定字段值的對象?

memoryRef.orderByChild("party").equalTo(true).setValue(null); 

錯誤

我讀過這... https://firebase.google.com/docs/reference/js/firebase.database.Query

只有動作處理程序有......請大家幫忙,我感覺它應該簡單...

回答

0

有可能是比較理想的方法,但是這對我來說是什麼在起作用:

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("memories"); 
    ValueEventListener memListener = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      memoryList = new ArrayList<>(); 
      Memory memory; 

      for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) { 

       int cost = (int) userSnapshot.child("cost").getValue(); 
       String name = (String) userSnapshot.child("name").getValue(); 
       //Get other fields here 

       if (name.matches("party")) { 
        memory = new Memory(name , cost); 
        memoryList.add(memory); 
       } 

      } 


     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }; 

    mDatabase.addValueEventListener(memListener); 

PS:我只是將它添加到一個數組...在這裏,你需要

1

你可以使用查詢你可以改變它:

Query query = memoryRef.orderByChild("name").equalTo("party"); 
    query.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot){ 
      for (DataSnapshot child : dataSnapshot.getChildren()) { 
       //to update: 
       memoryRef.child(child.getKey()).child("cost").setValue(100); 
       //delete 
       memoryRef.child(child.getKey()).removeValue(); 
      } 
     } 
    }); 

注意:請記得設置indexOn規則在「名稱」爲內存

你的規則應該是這樣的:

{ 
    "rules": { 
    ... 
    "memories": { 
     ".indexOn": "name" 
    } 
    } 
} 
+0

我們如何設置indexOn規則? –

+0

「數據庫」 - >點擊「數據」旁邊的「規則」標籤, 點擊此處查看更多信息,https://firebase.google.com/docs/database/security –

+0

非常感謝。如果你有時間請看看這個[問題](https://stackoverflow.com/questions/45207730/updating-firebase-database-with-nodes-created-with-push) –

相關問題