【问题标题】:Remove a node from firebase database从 firebase 数据库中删除节点
【发布时间】:2019-10-07 12:41:42
【问题描述】:

我想从我的 Firebase 数据库中删除一个节点“全部”。

这是我的数据库结构:

这是一个默认生成的节点。我没有在代码中的任何地方添加它。下面是我将数据插入 Firebase 数据库的代码。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_details);
    etemail_id = (EditText) findViewById(R.id.etEmailid);
    etpassword = (EditText) findViewById(R.id.etPassword);

    tvlogin_details = (TextView) findViewById(R.id.tvLoginDetails);
    btback = (Button) findViewById(R.id.btBack);
    mAuth = FirebaseAuth.getInstance();
    btregister = (Button) findViewById(R.id.btRegister);
    database=FirebaseDatabase.getInstance();
    reference=database.getReference();
    users=new Users();
    btregister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String email = etemail_id.getText().toString().trim();
            final String password = etpassword.getText().toString().trim();

            if (TextUtils.isEmpty(email)) {
                etemail_id.setError("Provide your Email first!");
                etemail_id.requestFocus();
            }
            else if (TextUtils.isEmpty(password)) {
                etpassword.setError("Enter Password!");
                etpassword.requestFocus();
            }
            else if (!(email.isEmpty() && password.isEmpty())) {
                mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(LoginDetails.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {

                            reference.addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    SharedPreferences sp = getSharedPreferences("Mypref", Context.MODE_PRIVATE);
                                    reference.child("User").child(mAuth.getUid()).setValue(sp);
                                    Toast.makeText(getApplicationContext(), "data entered", Toast.LENGTH_SHORT).show();
                                }
                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {

                                    Toast.makeText(getApplicationContext(), "database error", Toast.LENGTH_SHORT).show();
                                }
                            });
                            Toast.makeText(LoginDetails.this, "Successfully registered", LENGTH_LONG).show();
                            Intent it = new Intent(getApplicationContext(), Login.class);
                            startActivity(it);
                        }

                        else {
                            Toast.makeText(LoginDetails.this, "Registration Error", LENGTH_LONG).show();
                        }
                    }
                });
            }
            else {
                Toast.makeText(LoginDetails.this, "Error", Toast.LENGTH_SHORT).show();
            }
         }
    }); 
}

请检查它有什么问题。

【问题讨论】:

  • 所以您只需要以编程方式删除all 节点,对吧?
  • 是的,我只想将节点全部删除

标签: java android firebase firebase-realtime-database firebase-authentication


【解决方案1】:

根据您的评论,要删除all 节点,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference allRef = rootRef.child("User").child(uid).child("all");
allRef.removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            Log.d(TAG, "all node deleted");
        }
    }
});;

【讨论】:

  • 下面的数据会不会和uid键下的一样
  • all节点下的所有数据将被删除。这是你问的吗?如果uid 节点下没有其他数据,uid 也将被删除,因为它已经没有子节点了。
  • 我希望数据存储在“用户”而不是“全部”节点下
  • 结构应该是 User->Uid->Age 而不是 User->Uid->all->Age
  • 听起来你的问题是从删除节点开始的,但实际上只是关于如何正确地将数据添加到数据库中。在这一点上,您可能应该考虑提出一个新问题,以说明什么没有按您期望的方式工作。这样,我和其他 Firebase 开发人员就可以为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 2021-05-15
  • 2018-04-12
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 2018-11-24
相关资源
最近更新 更多