2017-06-02 37 views
1

在我的应用程序中,我添加用户并将他们的详细信息存储到我的FireBase数据库中。我的孩子之一是连接号码。两个用户不应该有相同的连接号码。所以,当我首先添加一个新的孩子时,它应该检查我的数据库中的连接号。如果存在,应显示敬酒。 这是我添加用户到我的数据库的代码。Android - 在Firebase数据库中查找现有的孩子

conAddBTN.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        key = mdata.push().getKey(); 

        final String selectArea = addConSpinner.getSelectedItem().toString(); 

        final String due = dueET.getText().toString(); 
        final int mDue = Integer.parseInt(due); 

        String connectionNum = conNumET.getText().toString(); 
        connectionNum = "Connection Number = " + connectionNum; 

        final String number = conNumET.getText().toString(); 

        String doorNum = conDoorET.getText().toString(); 
        doorNum = "Door Number = " + doorNum; 

        String conName = conNameET.getText().toString(); 
        conName = "Name = " + conName; 

        final String name = conNameET.getText().toString(); 

        String phoneNum = conPhnNumET.getText().toString(); 
        phoneNum = "Phone Number = " + phoneNum; 

        String aadharNum = conAthreNumET.getText().toString(); 
        aadharNum = "Aadhar Number = " + aadharNum; 

        String rationNum = conRaCaNumET.getText().toString(); 
        rationNum = "Ration Number = " + rationNum; 

ConnectionInformation cInfo = new ConnectionInformation(doc, due, selectArea, finalConnectionNum, finalDoorNum, finalConName, finalPhoneNum, finalAadharNum, finalRationNum,mDue); 
          mdata.child(selectArea).child(key).setValue(cInfo); 

          Connections connect = new Connections(number, name, due, doc); 
          connection.child(selectArea).child(key).setValue(connect); 

          totalConecinArea = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("Total No of Connections"); 
          totalConecinArea.child("Total").child(selectArea).child(key).child(number).setValue(mDue); 

          totalNoConnectionDB.child("Total").child(key).child(number).setValue(mDue); 

          toast("New Connection " + finalConnectionNum + "," + finalConName + " is added"); 

          Intent i = new Intent(AddConnection.this, AreaGridActivity.class); 
          startActivity(i); 

这是我的数据库结构。 DataBase Structure

如果您需要任何额外的信息恳请..

回答

0

在你的情况,你需要得到你的数据库的dataSnapShot并添加一个if语句来检查值是否存在。所以你的代码应该是这样的,

connection.child(selectArea).addListenerForSingleValueEvent(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         for (DataSnapshot ds : dataSnapshot.getChildren()) { 
          if (ds.child("conecNum").getValue().equals(number)) { 
           toast("Connection Number Already Exists"); 
          } else { 
           ConnectionInformation cInfo = new ConnectionInformation(doc, due, selectArea, finalConnectionNum, finalDoorNum, finalConName, finalPhoneNum, finalAadharNum, finalRationNum, mDue); 
           mdata.child(selectArea).child(key).setValue(cInfo); 

           Connections connect = new Connections(number, name, due, doc); 
           connection.child(selectArea).child(key).setValue(connect); 

           totalConecinArea = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("Total No of Connections"); 
           totalConecinArea.child("Total").child(selectArea).child(key).child(number).setValue(mDue); 

           totalNoConnectionDB.child("Total").child(key).child(number).setValue(mDue); 

           toast("New Connection " + finalConnectionNum + "," + finalConName + " is added"); 

           Intent i = new Intent(AddConnection.this, AreaGridActivity.class); 
           startActivity(i); 
          } 
         } 
        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 
       }); 
+1

这就是我要找的...谢谢.. – Spidey

相关问题