簡體   English   中英

Firebase 實時數據庫刪除列表中的項目

[英]Firebase Realtime Database delete item in List

我將數據以這種格式存儲在實時數據庫中:

在此處輸入圖片說明

如果我想刪除名為 7P3MRvkC2FQkwcyC7CYVWZP9Ps72 的列表中的條目之一,我使用此代碼。 this下的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
                        }
                    });
                }

但這會刪除完整的用戶列表。

這是預期的行為。 如果您只需要刪除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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM