Вы не можете загрузить изображение непосредственно в базу данных Firebase.Сначала вы должны загрузить изображение в хранилище Firebase, затем вы можете сохранить имя изображения / местоположение / downloadUrl в базе данных, если хотите.Хотя хранить URL-адрес загрузки не рекомендуется.
const file = ...
const metadata = { contentType: 'image/jpeg' }; // or whatever you want
const storageRef = firebase.storage().ref();
const uploadTask = storageRef.child(`images/${file.name}`).put(file, metadata);
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, snapshot => {
// If you want to show upload progress, do whatever you want with progress...
const progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
switch (snapshot.state) {
case firebase.storage.TaskState.PAUSED:
console.log('Upload is paused');
break;
case firebase.storage.TaskState.RUNNING:
console.log('Upload is running');
break;
}
}, error => {
console.log(error);
}, () => {
// upload finished with success, you can get the download URL
uploadTask.snapshot.ref.getDownloadURL().then(downloadURL => {
console.log(downloadURL);
});
});
Если вы хотите сохранить downloadUrl в базе данных, то вам нужно сохранить downloadUrl в переменной или поместить набор базы данных в завершенную загрузку.Перезвоните.Часть набора базы данных должна работать следующим образом:
// The id should foloow your database structure,
// based on your posted image, should look like this:
// `noti_${id}` where the id is a number.
firebase.database().ref(`notification/${id}`).set({
...uploadData,
image: downloadUrl
});
Кроме того, я вряд ли рекомендую использовать async await для обработки обещаний и использовать облачное хранилище вместо базы данных в реальном времени.