Update specific Values using Firebase for Android

后端 未结 5 449
既然无缘
既然无缘 2020-12-05 01:17

I have a Firebase data created as follows

tasks
-K1NRz9l5PU_0R8ltgXz
   Description: \"test1\"
   Status: \"PENDING\"
 -K1NRz9l5PU_0CFDtgXz
   Description: \         


        
5条回答
  •  不思量自难忘°
    2020-12-05 01:58

    You're not specifying the task id of the task that you want to update.

    String taskId = "-K1NRz9l5PU_0CFDtgXz";
    
    Firebase m_objFireBaseRef = new Firebase(AppConstants.FIREBASE_URL);        
    Firebase objRef = m_objFireBaseRef.child("tasks");
    Firebase taskRef = objRef.child(taskId);
    Map taskMap = new HashMap();
    taskMap.put("Status", "COMPLETED");
    taskRef.updateChildren(taskMap);
    

    Alternatively, you can just call setValue() on the property you want to update

    String taskId = "-K1NRz9l5PU_0CFDtgXz";
    
    Firebase m_objFireBaseRef = new Firebase(AppConstants.FIREBASE_URL);        
    Firebase objRef = m_objFireBaseRef.child("tasks");
    Firebase taskRef = objRef.child(taskId);
    Firebase statusRef = taskRef.child("Status");
    statusRef.setValue("COMPLETED");
    

    Or:

    Firebase m_objFireBaseRef = new Firebase(AppConstants.FIREBASE_URL);        
    Firebase objRef = m_objFireBaseRef.child("tasks");
    objRef.child(taskId).child("Status").setValue("COMPLETED");
    

    Update

    Not sure what "I need to track the ID based on the status" means. But if you want to synchronize all tasks that are in status Pending, you'd do:

    Firebase m_objFireBaseRef = new Firebase(AppConstants.FIREBASE_URL);        
    Firebase objRef = m_objFireBaseRef.child("tasks");
    Query pendingTasks = objRef.orderByChild("Status").equalTo("PENDING");
    pendingTasks.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot tasksSnapshot) {
            for (DataSnapshot snapshot: tasksSnapshot.getChildren()) {
                snapshot.getRef().child("Status").setValue("COMPLETED");
            }
        }
        @Override
        public void onCancelled(FirebaseError firebaseError) {
            System.out.println("The read failed: " + firebaseError.getMessage());
        }
    });
    

提交回复
热议问题