У меня есть приложение Angular (9), которое использует AngularFire для интеграции с Firebase. Я создал форму для сбора пользовательских данных, но также хотел бы разрешить пользователю загружать изображение профиля внутри формы. Из того, что я могу сказать в документации, это означает попадание во вторую конечную точку для сохранения изображения.
Я смог сохранить пользовательские данные в моей коллекции "users" и загрузить файл в мою Angular место хранения. Однако у меня возникают проблемы при получении URL-адреса изображения профиля на объекте моего пользователя. Я хотел бы, чтобы это было сделано в том же вызове службы от компонента.
Компонент:
// Runs on file input change
onFileChange(event) {
this.file = event;
}
// Runs on form submit
onSubmit(user) {
this.userService.newUser(user, this.file);
}
Сервис
newUser(user, file) {
const fileName = Math.random().toString(36).substring(2);
const ref = this.storage.ref(`images/${fileName}`);
// Need to update user.avatar so that when it is added to the collection it contains the download url
return forkJoin([
this.firestore.collection('users').add(user),
ref.put(file.target.files[0])
]);
}