我尝试将图像上传到个人资料页面。我成功地将图像上传到存储并获取了 photoURL 和更新的用户数据库。但提交后,只有 photoURL,其他用户数据(如 userInfo、姓名、年龄)都消失了。已删除。
我想我在这里没有得到什么:
async function uploadFile() {
if (file) {
const uniqueName = new Date().getTime() + file.name;
const storageRef = ref(storage, uniqueName);
const uploadTask = uploadBytesResumable(storageRef, file);
uploadTask.on(
"state_changed",
(snapshot) => {
const progress =
(snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log(`Upload is ${progress}% done`);
},
(error) => {
console.log("Error uploading file: ", error);
},
async () => {
try {
const downloadURL = await getDownloadURL(uploadTask.snapshot.ref);
console.log("File available at", downloadURL);
setPhotoURL(downloadURL);
const userDocRef = doc(db, "profile", userInfo.userID);
await setDoc(userDocRef, { photoURL: downloadURL });
} catch (error) {
console.error("Error getting download URL: ", error);
}
}
);
}
}
uploadFile();
fetchData();
}, []);
您应该使用
setDoc()
,而不是使用 await setDoc(userDocRef, { photoURL: downloadURL });
方法 (updateDoc()
),请参阅 Firestore 文档。