Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase实时数据库删除列表中的项目_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase实时数据库删除列表中的项目

Java Firebase实时数据库删除列表中的项目,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我将数据以以下格式存储在实时数据库中: 如果我想删除名为7P3MRVKC2FQKWC7CYVWZP9PS72的列表中的一个条目,我将使用以下代码。 此项下的id将自动生成: FirebaseDatabase.getInstance() .getReference() .child("users") .child(id) -------------------> unique

我将数据以以下格式存储在实时数据库中:

如果我想删除名为7P3MRVKC2FQKWC7CYVWZP9PS72的列表中的一个条目,我将使用以下代码。 此项下的id将自动生成:

FirebaseDatabase.getInstance()
                .getReference()
                .child("users")
                .child(id) -------------------> unique id
                .orderByChild("orderId")
                .equalTo(orderId,"orderId")
                .getRef()
                .removeValue();

但这会删除完整的用户列表。

请尝试此代码

DatabaseReference ref = FirebaseDatabase.getInstance()
            .getReference()
            .child("users")
            .child(id);

ref.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    dataSnapshot.getRef().removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            // notify
                        }
                    });
                }
DatabaseReference=FirebaseDatabase.getInstance()
.getReference()
.child(“用户”)
.儿童(身份证);
ref.addListenerForSingleValueEvent(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
dataSnapshot.getRef().removeValue().addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
//通知
}
});
}
但这会删除完整的用户列表

这是预期的行为。如果只需要删除
orderId
属性中包含特定“orderId”值的元素,则应通过如下代码行中的结果进行迭代:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
DatabaseReference uidRef = usersRef.child(uid);
Query query = uidRef.orderByChild("orderId").equalTo(orderId);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            ds.getRef().removeValue();
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
query.addListenerForSingleValueEvent(valueEventListener);

这只会删除“用户”中的一个用户。嗨,Bippan!你试过我的解决方案吗?如果你认为我的答案对你有帮助,请考虑接受它。✔️). 我真的很感激。谢谢!