【发布时间】:2021-05-08 11:51:31
【问题描述】:
我所指问题的图片 发给:
我正在尝试创建一个教育应用程序,用户可以在其中创建教室,并可以为学生提供作业、家庭作业和视频讲座等工作。我使用 Firebase 实时数据库作为 BAAS。到目前为止一切正常,当我创建一个教室,即在“教室”节点下的节点上设置一个值时,整个数据库中的数据被删除,然后在主数据库下创建一个名为“教室”的新节点,然后Classroom 对象的值在那里设置。自 3 天以来,我一直在对此进行故障排除,在堆栈溢出方面看到了类似的问题,但大多数问题都没有答案,我尝试了那些有答案的问题的答案,但它们没有用。请帮助我,由于这个问题,我被卡住了,无法发布我的应用供公众使用。
为了帮助调试,这里是我正在使用的一些代码:
createClassroom.setOnClickListener(v -> {
String proposedName = className.getText().toString();
if (proposedName.equals("")) {
//some checks for ensuring proposed name is a valid classroom name
} else {
// Some code which sets the values of Classroom Object (setters)
FirebaseDatabase.getInstance()
.getReference()
.child("Classrooms")
.child(classroom.getId())
.setValue(classroom.toMap())
.addOnSuccessListener(aVoid -> {
updateUserInDb())
.addOnFailureListener(e -> Toast.makeText(context, "Failed Due To " + e.getMessage(), Toast.LENGTH_LONG).show());
}
});
}
我也尝试过使用 FirebaseDatabase.getInstance().getReference("Classrooms")... 方法,但它没有任何改变。
另外,这里是 updateUserInDb() 方法:
private void updateUserInDb() {
String user_id = DataFlowGlobals.user.getId();
FirebaseDatabase.getInstance()
.getReference()
.child("Users")
.child(user_id)
.child("cre")
.child(classroom.getId())
.setValue(classroom.getId())
.addOnSuccessListener(aVoid -> Toast.makeText(context, "Classroom Created Successfully........", Toast.LENGTH_SHORT).show())
.addOnFailureListener(e -> Toast.makeText(context, "Failed due to " + e.getMessage(), Toast.LENGTH_SHORT).show());
finish();
}
请尽快提供帮助,提前感谢您的帮助!
编辑 1:我添加了我遇到的问题的图片。
【问题讨论】:
-
我认为所有子节点都不存在。你能确保你所有的
child都存在于 firebase 中吗? -
您是指特定教室的所有子节点还是“教室”节点?节点“教室”一开始并不存在,但它是在所有数据被自动删除后创建的。我正在用屏幕截图编辑我的问题,显示我的问题。
-
不知道是什么问题。但是你可以试试 Database
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Classrooms").child(classroom.getId());然后 setValue onref。也可用于updateUserinDb -
感谢您的帮助,但没有成功。数据仍然被删除。我不知道为什么会这样。我以前有相同的代码,但现在只有它解决了这个问题。
-
一切看起来都很好。不知道问题所在。顺便说一句,如果您找到任何解决方案,请告诉我们。
标签: android firebase firebase-realtime-database