【问题标题】:Couldn't create collection in firebase?无法在 Firebase 中创建集合?
【发布时间】:2023-01-01 20:52:55
【问题描述】:

我正在尝试创建一个集合(如果不存在)并上传 img 文件。

我正在接收上传图像 URL 和进度,但它没有创建名为图像的集合。

const useStorage = (file) => {
const [progress, setProgress] = useState(0);
const [error, setError] = useState(null);
const [url, setUrl] = useState(null);

useEffect(() =>{
const storageRef = ref(storage, file.name);
const collectionRef = collection(db, "images");

console.log(collectionRef)


//get Progress
const uploadTask = uploadBytesResumable(storageRef, file);
uploadTask.on('state_changed', 
(snap) => {
const progress = Math.round((snap.bytesTransferred / snap.totalBytes) 
* 100);
console.log('Upload is ' + progress + '% done');
setProgress(progress);
}, 
(error) => {
setError(error)
}, 

// Handle successful uploads on complete
async () => {
const url= await getDownloadURL(uploadTask.snapshot.ref);
console.log('File available at', URL);
collectionRef.addDoc({ url});
setUrl(URL);
});
},[file])
return { progress, error, url };
}

export default useStorage;

不确定addDoc() 是否有效。

【问题讨论】:

  • 不要将图像粘贴为代码或错误。请阅读:stackoverflow.com/help/how-to-ask
  • 考虑使用 await collectionRef.addDoc({ url }),这样 addDoc 可能生成的错误就会转换为异常。
  • @FrankvanPuffelen 谢谢,await addDoc(collectionRef, { url}); 这有效

标签: reactjs firebase google-cloud-firestore react-custom-hooks


【解决方案1】:

导入:import {collection,addDoc} from 'firebase/firestore';

替换:collectionRef.addDoc({ url});

收件人:await addDoc(collectionRef, { url});

【讨论】:

    【解决方案2】:

    集合只是出现和消失。如果删除收藏中的所有文件,收藏本身就会消失。如果您在不存在的集合中创建任何文档,则集合将存在。

    【讨论】:

      【解决方案3】:

      您面临的问题是您的模拟器。两者都试试。

      1. 冷启动你的模拟器
      2. 在真实设备中尝试

        我也有同样的问题并使用两个步骤之一修复它。 :)

      【讨论】:

        猜你喜欢
        • 2021-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 1970-01-01
        • 2014-01-26
        相关资源
        最近更新 更多