我有一个包含以下代码的服务类型脚本文件
export class FirebaseService {
constructor(private afs: AngularFirestore, private storage: AngularFireStorage) {}
uploadFile(file: any) {
const filePath = 'path/to/save/file';
const fileRef = this.storage.ref(filePath);
const task = this.storage.upload(filePath, file);
return task.snapshotChanges().pipe(
finalize(() => {
return fileRef.getDownloadURL()
})
).toPromise();
}
createDocument(collection: string, name: string, file: any) {
this.uploadFile(file).then(downloadURL => {
if (downloadURL) {
const data = {
title: name,
downloadURL: downloadURL
};
this.afs.collection(collection).add(data);
} else {
console.log("downloadURL is not defined.");
}
});
}
}
在我的组件中,我有以下代码
export class CreatePage implements OnInit {
name = ""
file: any;
onFileChanged(event: any) {
this.file = event.target.files[0];
}
onSubmit() {
console.log(this.file)
this.firebaseService.createDocument(this.selectedOption, this.name, this.file)
this.name = "", this.selectedOption = ""
}
}
HTML看起来像这样:
<ion-item> <input type="file" (change)="onFileChanged($event)"> </ion-item>
如何解决此问题?错误消息如下所示:
错误代码:9095 ERROR错误代码:未被抓住的(承诺中的):Firebase错误:[代码=无效参数]:使用无效数据调用了函数addDoc()。不支持的字段值:未定义(在文档freunde/lcAwFcHvQSo5iV6ExQPi的字段downloadURL. metadata. cacheControl中找到)
它会将图像上传到存储器,但不会将下载的url上传到firebase firestore。
1条答案
按热度按时间fafcakar1#
调试步骤1。
使代码准确显示要发送到Firebase的内容。将console.log更改为三个console.log
在您的问题中显示上面的确切输出
这将使我们发现问题的机会最大化。
例如,在上面的代码中,我看不到
this.selectedOption
是在哪里创建的。