javascript - Firebase Javascript 多次删除单击
问题描述
我正在开发用于管理活动和教室预订的网页。对于每一个事件,我都会保存它发生的日期、时间和教室。我目前正在研究删除事件和相关预订的功能。
function deleteEvent(event_key, event_date, event_classroom_key) {
if (event_classroom_key != null) {
var ref_prenotation = firebase.database().ref().child('prenotation/'
+ event_date.getFullYear() + '/'
+ (event_date.getMonth() + 1) + '/'
+ event_date.getDate() + '/'
+ event_classroom_key + '/');
ref_prenotation.once('value', snap => {
snap.forEach(childSnap => {
childSnap.forEach(gcSnap => {
if (gcSnap.key == 'event_key') {
if (event_key == gcSnap.val()) {
ref_prenotation.child(childSnap.key).remove();
}
}
});
});
});
}
var event_ref = firebase.database().ref().child('event/');
event_ref.child(event_key).remove();
$('#event_details').hide();
$('#main_events_page').show();
loadEventList();
}
如您所见,要从数据库中删除预订,我按年、月、日和教室浏览数据库。通过这种方式,我获得了有关所选日期教室预订的各个小时的信息。
然后我检查预订的时间是否是指我要删除的事件,以防我删除它们。然后我删除事件记录本身。
每个事件和相关预订的生成如下所示。
$('#create_event_btn').on('click', () => {
var today = Date.now() - (24*3600*1000);
user = firebase.auth().currentUser;
if (cs_selected_rows > 0 && ne_date >= today && eventTitle.value != "") {
var event_prenotation = firebase.database().ref().child('event/').push({
title : eventTitle.value,
classroom : classroom_name,
classroom_key : classroom_id,
date : ne_date.getTime(),
teacher : user.displayName,
teacher_key : user.uid,
starting_hour : selected_hours[0]
});
//create a reservation for the selected room, unless the event takes place abroad
if (classroom_name != "Outdoor") {
for (var i = 0; i < selected_hours.length; i++) {
firebase.database().ref().child('prenotation/'+year+'/'+month+'/'+day+'/'+classroom_id+'/'+selected_hours[i]+'/').set({
event_key : event_prenotation.key,
event : eventTitle.value,
classroom : classroom_name
});
}
}
loadEventList();
selected_hours = [];
cs_selected_rows = 0;
$('#new_event_page').hide();
$('#main_events_page').show();
$("#schedule_event_table_body").empty();
} else if (ne_date < today) {
alert('ERROR');
}
});
问题是,当我按下与某个事件相关的“删除”按钮时,除了选定的事件之外,还会删除几个事件。当我尝试修改与某个事件相关的数据时会发生类似的情况,并且经常会发生许多其他事件的数据被修改的情况。我注意到这主要发生在我通过站点访问有关数据库中事件的信息而不更改任何内容时。然后当我尝试修改或删除另一个事件时,第一个也受到影响。
我希望我提供了有关该问题的有用信息。我很长时间没有使用firebase,但我认为我系统性地做错了,因为问题经常发生在我身上。
解决方案
推荐阅读
- web-scraping - 仅将 IMAGE 函数添加到通过 IMPORTXML 收集的一列数据中
- javascript - JS:将页面动画保存到 mp4
- python - Python中有没有一种方法可以在线性回归分析中获取分布残差?
- php - Wordpress 登录重定向影响管理对话框
- javascript - 类型错误:res.response 未定义
- mongodb - MongoDB Compass:选择不同的字段值
- python - 返回范围内所有单元格地址的列表
- scala - 使用scalatest测试akka时找不到测试用例,我该怎么做才能纠正它?
- sql-server - 无法在 SSMS 中使用不同的域凭据
- mysql - Mysql存储过程:匹配列规则以检索值