Я пытаюсь что-то установить с помощью базы данных Firebase в реальном времени, используя заданный код, но перед этим мне нужно использовать один моментальный снимок, чтобы получить значение и обновить его.
Когда у меня есть массив, содержащий строки ex.) array[0] = "aaa"; array[1] = "bbb";
Я должен быть в состоянии получить каждую строку, но я получаю только последний элемент массива.
Прежде всего, массив содержал объект типа { name:"name", num:2, isEmpty:false }
, поэтому я попытался исправить его, чтобы он содержал только строку
используя array.push("string");
, но я все еще получаю ту же ошибку.
Перед использованием once('value',snapshot){...}
У меня не было проблем с получением элемента из массива, но когда я использую once()
, я получаю только последний элемент массива с недопустимым индексом.
array[0] = 'aaaa'; array[1] ='bbbb';
for(var i=0;i<array.length;i++){
alert(array[i]+' '+i);
//this works fine, alerts aaaa 0, bbbb 1
firebase.database().ref('/Something/').child(array[i]).child('size').once('value',snap=>{
alert(array[i]+' '+i);
//alerts bbbb 2, bbbb 2, I really don't get the issue, snap.val() works fine tho but only get bbbb's snap.val()
});
}
Это пример кода, я пытался установить что-то внутри once()
, но он устанавливает только дочерний путь 'bbbb'. Он никогда не идет по пути «аааа».
он должен предупредить aaaa 0, bbbb 1. но почему я получаю bbbb 2, bbbb 2? индекс даже недействителен, длина массива равна 2. Я действительно понятия не имею об этой проблеме. Пожалуйста, кто-нибудь может мне помочь из этого?
* Я перепробовал все, что мог, изменив массив, используя on()
вместо once()
, используя then()
после once()
и т. Д., Но по примеру кода он не должен иметь никаких проблем правильно ??