当我删除Firebase中的第一个节点“列表”时,会自动删除第二个节点“列表2”。我认为这是由于两个节点的子节点的相同键而发生的。有没有办法阻止另一个节点被删除?
这是我用来将数据从“List”复制到“List 2”然后删除节点“List”的代码。当我删除一个节点时,另一个节点也会被删除。
ref.child("List").child(cardTitle).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ref.child("SHOP_ITEM").child("List 2).setValue(dataSnapshot.getValue());
ref.child("SHOP_ITEM").child("List").removeValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:0)
我有同样的问题,所以我用了一个工作;我只是添加了一个取消值。类似于cancel:"true"
。
根据您的情况DATABASEREF1 = List1
和DATABASEREF2 = List2
..
这对我有用。这是代码:
DATABASEREF1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String,String> hMdataSnapshot = (HashMap<String, String>) dataSnapshot.getValue();
hMdataSnapshot.put("canceled","true");
DATABASEREF2.setValue(hMdataSnapshot).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
DATABASEREF1.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
//DO SOMETHING
} else {
//DO SOMETHING
}
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//DO SOMETHING
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});