我添加的队列在这之间一直跳过多个队列号

时间:2018-12-05 18:06:10

标签: javascript html firebase firebase-realtime-database queue

这就是我的意思。我在javascript中有这个Queue类,可以与Firebase数据库一起使用。这是课程:

class Queue{

constructor(){
this.items=[];
}

enqueue(element){
this.items.push(element);
}

dequeue(){
if(this.isEmpty())
return "Underflow"
return this.items.shift();
}

front(){
if(this.isEmpty())
return "No patients in queue.";
return this.items[0];
}

isEmpty(){
return this.items.length==0;
}

printQueue(){
var str="";

for(var i=0; i<this.items.length;i++)
str+=this.items[i]+" ";
return str;
}

submitQueue(element){

for(var i=0; i<=this.items.length;i++){

if(this.items[i]==element){
return i;
break;
}

}

}

}

这是我实现Queue类的部分:

		var queue = new Queue();
		
		databaseRef
		.orderByChild("appointmentDetail")
		.equalTo(today)
		.on("value", function(results){
		if(!results.exists()){
		event.stopPropagation();
		window.alert("No patient available for today's date.");
		}

		else{
		
		results.forEach(function(snapshot) {
		var json= snapshot.val();
		
		
		uid=json.authID;
		
		queue.enqueue(json.email);
		
		var x = queue.submitQueue(json.email)+1;
		
		databaseRef.child(uid).update({"/queue":x});
		});
		
		event.stopPropagation();
		window.alert("Queue generated for today.");
		}
		});

这个想法是,firebase数据库将遍历所有具有“ appointmentDetail”日期与当前日期相同的用户。然后,使用他们的电子邮件数据将每个用户添加到队列中。然后,要将每个用户的队列号添加到数据库,我使用了SubmitQueue(element),它在队列中循环遍历数据,如果队列中的电子邮件数据等于给定的电子邮件数据,则检索队列号并更新到相应用户的数据库。这将一直发生,直到已检索到所有用户的队列号。

我在这里面临的问题是,我有4位用户的日期与当前日期相同,并且为他们生成了队列。数据库中为每个用户更新的队列号分别为1、3、6和10,而不是1、2、3和4。

0 个答案:

没有答案