在Firebase中插入之前检查重复项

时间:2016-10-25 13:38:47

标签: android firebase firebase-realtime-database

我是Firebase的新用户,我尝试将其应用到Android应用程序中。直到现在一切顺利。我必须在插入之前检查重复的记录,甚至在我在线观看的大量教程之后我无法弄明白。

我尝试过规则,但显然我无法以他们的工作方式写下来。我尝试使用push(),但这也无效。

目前这是我的代码:

private void updateDatabase(String year, String courseOfStudent, String workshopGroup, String day, String time, String lecture){
    try{
        mDatabase.child("student-timetables").child("course-of-student").setValue(courseOfStudent);
        mDatabase.child("student-timetables").child(courseOfStudent).child("year").setValue(year);
        mDatabase.child("student-timetables").child(courseOfStudent).child(year).child("workshop-group").setValue(workshopGroup);
        mDatabase.child("student-timetables").child(courseOfStudent).child(year).child(workshopGroup).child("day").setValue(day);
        mDatabase.child("student-timetables").child(courseOfStudent).child(year).child(workshopGroup).child(day).child("time").setValue(time);
        mDatabase.child("student-timetables").child(courseOfStudent).child(year).child(workshopGroup).child(day).child(time).child("lecture").setValue(lecture);}
    catch (Exception e)
    {
        Toast.makeText(getContext(), "Internal error occurred, please try again.", Toast.LENGTH_LONG).show();
    }
}

Firebase控制台的规则:

 {
  "rules": {
    ".read": "true",
    ".write": "auth != null",
      "course-of-student": {
        "year": {
          "workshop-group": {
            "day":{              
              "time": {
                ".write": "!data.exists()"
              }              
            }
          }
        }
      }
  }
}

截至目前发生的情况是,如果在特定时间有讲座详细信息,我尝试创建此时的新记录,之前的记录将被覆盖。我想拒绝这一点,而是显示一条消息。

我哪里错了?

1 个答案:

答案 0 :(得分:2)

首先,添加“ListenerForSingleValueEvent”,然后将数据保存在Firebase中(如果不存在..) 例如:

 // same code
 $formOption->getIsDefault();