あり、より理想的なアプローチであってもよいが、これは私のためにどのような作品である可能性があり:
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:
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ルールを設定することを忘れないでください、私はちょうどここ配列にそれを追加している...あなたは
:メモリ
ための「名前」にあなたのルールは次のようになりますでしょうか? –
"データベース" - > "データ"の横にある "ルール"タブをクリックしてください。 詳細はこちらhttps://firebase.google.com/docs/database/security –
ありがとうございました。時間がある場合は、この[質問](https://stackoverflow.com/questions/45207730/updating-firebase-database-with-nodes-created-with-push)をご覧ください。 –