Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-在Firebase数据库中查找现有子级_Android_Firebase Realtime Database - Fatal编程技术网

Android-在Firebase数据库中查找现有子级

Android-在Firebase数据库中查找现有子级,android,firebase-realtime-database,Android,Firebase Realtime Database,在我的应用程序中,我正在添加用户并将他们的详细信息存储到我的FireBase数据库中。我的一个孩子是连接号码。两个用户不应具有相同的连接号码。因此,当我首先添加一个新的子节点时,它应该检查数据库中的连接号。如果存在,则应显示祝酒词。 这是我向数据库添加用户的代码 conAddBTN.setOnClickListener(new View.OnClickListener() { @Override public void onCli

在我的应用程序中,我正在添加用户并将他们的详细信息存储到我的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);
这是我的数据库结构


如果您需要任何额外信息,请询问..

在您的情况下,您需要获取数据库的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) {

                    }
                });

在本例中,需要获取数据库的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) {

                    }
                });