Очередь, которую я добавил, пропускает несколько номеров очередей между - PullRequest
0 голосов
/ 05 декабря 2018

Вот что я имею в виду.У меня есть этот класс очереди в JavaScript для использования вместе с базой данных 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 проходит через всех пользователей, у которых дата "assignDetail" совпадает с текущей датой.Каждый пользователь затем добавляется в очередь, используя свои данные электронной почты.Затем, чтобы добавить номер очереди каждого пользователя в базу данных, я использую submitQueue (элемент), где он просматривает данные в очереди, и если данные электронной почты в очереди равны данным электронной почты, номер очереди извлекаетсяи обновляется до базы данных соответствующего пользователя.Это происходит до тех пор, пока не будет получен номер очереди всех пользователей.

Проблема, с которой я здесь сталкиваюсь, заключается в том, что, скажем, у меня есть 4 пользователя, у которых дата совпадает с текущей датой, и я создаю для них очередь.Номера очередей, которые обновляются в базе данных для каждого пользователя, составляют 1, 3, 6 и 10, а не 1, 2, 3 и 4. Я был бы очень признателен за любую предоставленную помощь!

...