2017-06-02 7 views
1

私のアプリでは、ユーザーを追加してFireBaseデータベースにその詳細を保存しています。私の子供の1人はConnection Numberです。 2人のユーザーが同じ接続番号を持つべきではありません。だから、最初に新しい子供を追加すると、私のdatabseの接続番号をチェックする必要があります。存在する場合は、トーストを表示する必要があります。 これは自分のデータベースにユーザーを追加するためのコードです。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); 

これは私のdatabse構造です。あなたは余分な情報が必要な場合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

関連する問題