Estoy tratando de mover mis datos presentes en un nodo, es decir, cart_details / UID a otro nodo pedidos / UID / pedido1. Intenté diferentes maneras de hacerlo, pero todas parecen ser un poco confusas. ¿Existe alguna funcionalidad o método incorporado que pueda facilitar el trabajo? Cualquier ayuda es apreciada.
He adjuntado la imagen por la misma. IMAGEN
Te recomiendo que uses este método:
public void copyRecord(Firebase fromPath, final Firebase toPath) { fromPath.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { toPath.setValue(dataSnapshot.getValue(), new Firebase.CompletionListener() { @Override public void onComplete(FirebaseError firebaseError, Firebase firebase) { if (firebaseError != null) { System.out.println("Copy failed"); } else { System.out.println("Success"); } } }); } @Override public void onCancelled(FirebaseError firebaseError) {} }); }
Esta es una copia y no un movimiento como probablemente vea, por lo que el original permanecerá en su lugar original. Si desea eliminar, puede usar el método removeValue()
en fromPath
justo después de System.out.println("Success");
.
Edición: (03 de mayo de 2018).
Aquí está el código para usar el nuevo Api.
private void moveRecord(DatabaseReference fromPath, final DatabaseReference toPath) { ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { if (task.isComplete()) { Log.d(TAG, "Success!"); } else { Log.d(TAG, "Copy failed!"); } } }); } @Override public void onCancelled(DatabaseError databaseError) {} }; fromPath.addListenerForSingleValueEvent(valueEventListener); }