我是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()"
}
}
}
}
}
}
}
截至目前发生的情况是,如果在特定时间有讲座详细信息,我尝试创建此时的新记录,之前的记录将被覆盖。我想拒绝这一点,而是显示一条消息。
我哪里错了?
答案 0 :(得分:2)
首先,添加“ListenerForSingleValueEvent”,然后将数据保存在Firebase中(如果不存在..) 例如:
// same code
$formOption->getIsDefault();