【问题标题】:delete similar value in firebase in two different users删除两个不同用户的firebase中的相​​似值
【发布时间】:2017-11-27 20:17:35
【问题描述】:

实际上,我正在尝试删除应该在数据库中存在的所有用户中删除的组成员。我尝试使用带有datasapshot.getref().removeValue() 的DatabaseReference 删除值。但主要问题是此删除也应反映在其他用户帐户中。我正在尝试在其他帐户中删除,但它不起作用

Query query = fbData.limitToFirst(1);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

     dataSnapshot.getRef().removeValue();

     for(DataSnapshot child : dataSnapshot.getChildren()){
         //String email = (String) child.child("EmailId").getValue();

           String key = child.getKey();
           Log.e("the value",child.getValue().toString());
           //DatabaseReference dbref =fbData.child(key).child("Groups").child(value).removeValue();
                        child.child(key).getRef().removeValue();
       }
 }

我的数据库值看起来像

在上图中,每个用户都由组和成员列表组成。例如,如果名为 sankar@gmail.com 的用户想要退出组,则应将整个组从他的帐户中删除,而他在另一个用户组中的名称应也被删除,类似于 WhatsApp 组概念。在此先感谢

更新

public void onDataChange(DataSnapshot dataSnapshot) {
            String email = (String) dataSnapshot.child(keyUser).child("EmailId").getValue();
            Log.e("user mailid to delete",email);
            for(DataSnapshot child : dataSnapshot.getChildren()){

                String key = child.getKey();

                firebaseDB.child(key).child("Groups").child(value).child(email).removeValue();

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    首先,添加数据的方式与删除数据的方式相同。不幸的是,没有删除方法可以搜索数据库中的所有记录并删除属于特定用户的字段。你需要自己做。

    看到您的数据库结构,我建议您进行更改。而不是使用这样的东西:

    first
     |
     --- 0: emailZero
     |
     --- 1: emailOne
     |
     --- 2: emailTwo
    

    使用这个结构:

    first
     |
     --- emailZero: true
     |
     --- emailOne: true
     |
     --- emailTwo: true
    

    通过这种方式,您可以简单地从数据库中删除emailZero

    【讨论】:

    • 感谢您的回复。我们不能使用键迭代所有用户并从组中删除值吗?
    • 是的,你可以。您首先需要获取电子邮件地址并根据它们删除与用户相关的每条记录。上面的结构将帮助您实现这一目标。
    • 我尝试了一些代码,这些代码使用 for 循环显示在我的问题中,但它不起作用..任何帮助!
    • 如果您不进行一些更改,您的代码将无法运行。正如我之前所说,更改数据库结构将帮助您实现这一目标。您可以获取电子邮件地址并直接在您的DatabaseReference 中使用它,最后只需使用 removeValue() 方法。
    • 在上面的代码中我注释了一行DatabaseReference dbref =fbData.child(key).child("Groups").child(value).removeValue()here value 指的是电子邮件地址
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2022-08-11
    • 1970-01-01
    • 2022-01-01
    • 2020-04-15
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多