Вот что я имею в виду.У меня есть этот класс очереди в 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. Я был бы очень признателен за любую предоставленную помощь!