如何从firebase实时数据库中删除?

Ami*_*ant 34 android firebase firebase-realtime-database

我在Android应用中使用Firebase实时数据库,并且拥有如下数据: 在此输入图像描述

如何删除记录"Apple"(标记在图片中)?

根据文档,删除一个项目,你在引用上调用removeValue().但要获得引用我需要子ID.因为它是一个随机生成的id(-KISNx87aYigsH3ILp0D),如何删除呢?

Fra*_*len 53

如果您不知道要删除的项的键,则首先需要查询数据库以确定这些键:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query applesQuery = ref.child("firebase-test").orderByChild("title").equalTo("Apple");

applesQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) {
            appleSnapshot.getRef().removeValue();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.e(TAG, "onCancelled", databaseError.toException());
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢。这正是我正在寻找的。 (2认同)
  • 如果有多个标题为“ Apple”的节点怎么办? (2认同)

小智 7

如果您使用 firebase-admin 您可以简单地尝试一下

admin.ref(`/users/${userid}`).remove()
Run Code Online (Sandbox Code Playgroud)

这对我有用。

并且还要记住使用asyncawait语法。


小智 6

您可以使用此代码:

onDeletePost(id:string){
return this.http.delete(`https://my-angular8-prjt.firebaseio.com/posts/${id}.json`).subscribe();
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该详细说明您的答案的作用 (3认同)

mas*_*aya 5

这解决了我的问题

 mPostReference = FirebaseDatabase.getInstance().getReference()
                        .child("quotes").child(mPostKey);
                mPostReference.removeValue();
Run Code Online (Sandbox Code Playgroud)