将图像上传到 Firebase 存储并将 URL 从存储获取到用户数据库。但 photoURL 覆盖了用户数据库中的所有内容

问题描述 投票:0回答:1

我尝试将图像上传到个人资料页面。我成功地将图像上传到存储并获取了 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();
  }, []);

  
reactjs firebase file-upload
1个回答
0
投票

您应该使用

setDoc()
,而不是使用
await setDoc(userDocRef, { photoURL: downloadURL });
方法 (
updateDoc()
),请参阅 Firestore 文档

© www.soinside.com 2019 - 2024. All rights reserved.