使用表B凭据时如何从表A查询数据?

时间:2018-11-24 03:21:31

标签: android firebase

我正在开发一个可以记录出勤情况的移动应用程序。我对其进行开发,以便两个不同的应用程序(针对教职员工和学生)可以访问相同的数据库(Google Firebase实时数据库)。我把桌子和桌子都叫学生和职员。 我的问题是,当我以职员身份登录时,无法查询作为学生存储的数据。 我该怎么办?

这是我保存学生数据的方式。

isDuped([1,_])

这就是我保存员工数据的方式。

    private void saveData() {
    FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
    DatabaseReference myRef = firebaseDatabase.getReference("Student");

    UserProfile userProfile = new UserProfile(userName, userIDNum, userICNum, userEmail, userPhone, userCollegeName, userRoom, userFurniture);
    myRef.push().setValue(userProfile);}

how my firebase db looks like

我遇到的问题

    private void saveData() {
    FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
    DatabaseReference myRef = firebaseDatabase.getReference("Staff");

    UserProfile userProfile = new UserProfile(userName, userIDNum, userICNum, userEmail, userPhone, userCollegeName, userRoom, userFurniture);
    myRef.push().setValue(userProfile);
}

这是我用来检索数据的编码 coding for retrieving data

2 个答案:

答案 0 :(得分:0)

在“教师”应用中创建学生模型类,类似于在“学生”应用中创建学生的模型类, 从Firebase获取学生表的引用,并使用Child来访问数据

FirebaseDatabase.getInstance().getReference("Student")
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        Student stud = snapshot.getValue(Student.class);
                        if (stud.getRoll().equals(roll)) {
                             //whatever you want
                        } else {
                            //show some error
                        }
                    }
                }

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

                }
            });

答案 1 :(得分:0)

   myRef.child("Events").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("event_Name") && (dataSnapshot.hasChild("startEvent") && (dataSnapshot.hasChild("eventOrganizer")))) ) {
                String event_name = dataSnapshot.child("event_Name").getValue().toString();
                Activity_Event_Name.setText(event_name);


                String startEvent = dataSnapshot.child("startEvent").getValue().toString();
                ActivityStartDateInput.setText(startEvent);

                String fullname = dataSnapshot.child("eventOrganizer").getValue().toString();
                ActivityCityInput.setText(fullname);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });