Я пытаюсь обновить документ Firestore после сохранения файлов в Google Cloud Storage.Я хочу отправить массив URL-адресов хранимых файлов в документ в Firestore следующим образом ...
(attachments: [ {url: "fileone.jpeg", ...}, {url: "filetwo.jpeg", ...}, ...]).
Этот массив URL-адресов создается во внешнем интерфейсе с использованием firebases getDownloadURL()
.Я могу успешно обновить свой документ, но массив в обновленном документе всегда содержит на один элемент меньше, чем массив, созданный во внешней части.При console.log
-изображении массива, хранящегося в памяти (для отправки в firestore), я вижу, что значение в скобках, предшествующее [{},{}]
, также на единицу меньше, чем array.length.
Какая запись в консолимассив fileUrls (хранящийся в памяти для отправки в firestore) отображается, даже если fileUrls.length === 3
, а при расширении этой строки ниже отображаются все три URL-объекта, содержащие объекты с индексом 0:
fileUrls: > (2) [{…}, {…}]
Вот код реализацииэтот процесс обновления:
let fileUrls = []; // <<-- Array for file urls to be stored
let promises = [];
for (const file of state.post.files) {
const fileRef = storage.ref().child(`my file path`);
const p = fileRef.put(file)
.then(snapshot => {
fileRef.getDownloadURL()
.then(url => {
fileUrls.push({ url: url, type: file.type }) // Adding urls to arr
})
})
promises.push(p);
}
const all = Promise.all(promises);
all
.then(() => {
submissionRef.update({ // <<<--- Updating document created prior.
attachments: fileUrls
})
})
.catch(err => console.log(err));