如何在firebase实时数据库android中创建嵌套子节点

如何在firebase实时数据库android中创建嵌套子节点,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,您好,我正在尝试创建嵌套的子节点,但我不知道如何创建 这是我的数据 我要仿造银行 在手机下面,我想添加另一个名为“捐赠”的数据,在手机里面,我想添加一个名为“历史”的节点,就像任何时候捐赠者捐赠的钱应该存储在历史记录中一样 有人知道我怎么做吗 这是我的密码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi

您好,我正在尝试创建嵌套的子节点,但我不知道如何创建

这是我的数据

我要仿造银行

在手机下面,我想添加另一个名为“捐赠”的数据,在手机里面,我想添加一个名为“历史”的节点,就像任何时候捐赠者捐赠的钱应该存储在历史记录中一样 有人知道我怎么做吗

这是我的密码

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_donor__registration);
    doname=(EditText)findViewById(R.id.editname);
    dopass=(EditText)findViewById(R.id.editpass);
    docon=(EditText)findViewById(R.id.editcon);
    dophone=(EditText)findViewById(R.id.editphone);
    doemail=(EditText)findViewById(R.id.editemail);
    btn_register=(Button)findViewById(R.id.button2);
    myref1= FirebaseDatabase.getInstance().getReference("Donors");
    firebaseAuth =FirebaseAuth.getInstance();//d


    btn_register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String do_name=doname.getText().toString();
            String do_pass=dopass.getText().toString();
            String do_con=docon.getText().toString();
            String do_phone=dophone.getText().toString();
            String do_email=doemail.getText().toString();

            //validation

            if(do_name.equals(""))
                doname.setError("User name Should not be empty");
            else if(do_pass.equals(""))
                dopass.setError("Password Should not be empty");
            else if(do_con.equals(""))
                docon.setError("Confirm Password Should not be empty");
            else if(do_phone.equals(""))
                dophone.setError("Phone Should not be empty");
            else if(do_email.equals(""))
                doemail.setError("Email Should not be empty");
            else if(!do_pass.equals(do_con))
                docon.setError("Password and Confirm password should match");
            else if(do_pass.length()<8)
                dopass.setError("Password Should be at least 8 charaters");
            else if(do_phone.length()<8)
                dophone.setError("Phone number should be  8 digits");
            else if(!do_phone.startsWith("7")&& !do_phone.startsWith("9"))
                dophone.setError("Should Start with 7 or 9");
              else if(!do_email.matches(emailpattern))
                doemail.setError("Email Should be correct");



                //else

            else {


                //


                myref1.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        int flag = 0;
                        for (DataSnapshot d : snapshot.getChildren()) {
                            Donors ado = d.getValue(Donors.class);
                            if (ado.d_email.equalsIgnoreCase(do_email)) {
                                flag = 1;
                                Toast.makeText(Donor_Registration.this, "Donor already exists", Toast.LENGTH_LONG).show();
                            }
                        }



                        if (flag == 0) {

                            //
                            firebaseAuth.createUserWithEmailAndPassword(doemail.getText().toString(),dopass.getText().toString()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                                @Override
                                public void onComplete(@NonNull Task<AuthResult> task) {
                                    if(task.isSuccessful()){
                                        Toast.makeText(Donor_Registration.this,"Donor registered",Toast.LENGTH_LONG).show();



                                    }

                                  //  else
                                   // {
                                       // Toast.makeText(Donor_Registration.this,task.getException().getMessage(),Toast.LENGTH_LONG).show();
                                  //  }

                                }
                            });


                           Donors ado = new Donors(do_name, do_pass, do_phone, do_email);
                           String id = myref1.push().getKey();
                           myref1.child(id).setValue(ado);
                          Toast.makeText(Donor_Registration.this, "Donor registered", Toast.LENGTH_SHORT).show();







                        }


                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {

                    }
                });

            }

        }



    });














}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u provider\u注册);
doname=(EditText)findViewById(R.id.editname);
dopass=(EditText)findViewById(R.id.editpass);
docon=(EditText)findViewById(R.id.editcon);
dophone=(EditText)findViewById(R.id.editphone);
doemail=(EditText)findViewById(R.id.editemail);
btn_寄存器=(按钮)findViewById(R.id.button2);
myref1=FirebaseDatabase.getInstance().getReference(“捐赠者”);
firebaseAuth=firebaseAuth.getInstance();//d
btn_register.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串do_name=doname.getText().toString();
字符串do_pass=dopass.getText().toString();
字符串do_con=docon.getText().toString();
字符串do_phone=dophone.getText().toString();
字符串do_email=doemail.getText().toString();
//验证
if(do_name.equals(“”)
setError(“用户名不应为空”);
else if(do_pass.equals(“”)
setError(“密码不应为空”);
else if(do_con.equals(“”)
setError(“确认密码不应为空”);
else if(do_phone.equals(“”)
dophone.setError(“电话不应为空”);
else if(do_email.equals(“”)
setError(“电子邮件不应为空”);
如果(!do_pass.equals(do_con))
docon.setError(“密码和确认密码应匹配”);

否则,如果(do_pass.length()您的代码正在设置整个施主节点

FirebaseReference donorsNode = FirebaseDatabase.getInstance().getReference("Donors");
FirebaseReference donorNode = donorsNode.child(donorId);
donorNode.setValue(entireDonorValue);
FirebaseReference donorsNode = FirebaseDatabase.getInstance().getReference("Donors");
FirebaseReference donorNode = donorsNode.child(donorId);
FirebaseReference donationsNode = donorNode.child("Donations");
FirebaseReference donationNode = donationsNode.child(donationId);
donationNode.setValue(donationValue);
要使用捐赠更新它,只需在现有捐赠节点内设置一个子节点

FirebaseReference donorsNode = FirebaseDatabase.getInstance().getReference("Donors");
FirebaseReference donorNode = donorsNode.child(donorId);
donorNode.setValue(entireDonorValue);
FirebaseReference donorsNode = FirebaseDatabase.getInstance().getReference("Donors");
FirebaseReference donorNode = donorsNode.child(donorId);
FirebaseReference donationsNode = donorNode.child("Donations");
FirebaseReference donationNode = donationsNode.child(donationId);
donationNode.setValue(donationValue);

您可以直接使用儿童Nodeeyes,但是捐赠者会捐赠很多次我想要一些帮助我…就像我想要每次这个捐赠者捐赠它都必须将它存储在history中就像我有(捐赠者)在侧边我应该有(捐赠者信息)在里面他的信息和我想要(历史)每次捐赠者捐赠时,它都必须存储在里面。你想在
d_phone
中添加数据吗?不,我想添加一个叫做捐赠或历史的东西