我一直在使用 Firebase 和 React Native 构建一个应用程序,主要使用 Firestore。我开始使用 Firestore,它非常棒,但由于某种原因,在写入 Firestore 时,它仅在第一次尝试时有效(当我删除应用程序、重建并执行写入时)。
我尝试做完全相同的事情,除了写入 Firestore 之外,一切都按预期进行。
我也没有收到任何错误!
这是我正在做的事情:
export const addBrandProduct = (postObj) => {
return () => {
firebase
.firestore()
.collection('brandProducts')
.add(postObj)
.then((docRef) => {
console.log("Document written with ID: ", docRef.id);
Actions.categories();
})
.catch(error => {
console.error("Error adding document: ", error);
});
};
};
如需更多参考,这是我调用 addBrandProduct() 的组件代码
onUploadImages = () => {
let photo =
Platform.OS === 'ios'
? this.state.images.map(img => img.uri.replace('file://', ''))
: this.state.images.map(img => img.uri);
photo.forEach((image, i) => {
const sessionId = new Date().getTime();
const Blob = RNFetchBlob.polyfill.Blob;
const fs = RNFetchBlob.fs;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;
let uploadBlob = null;
let mime = 'image/jpg';
const imageRef = firebase
.storage()
.ref('brandProducts/')
.child(`${this.props.userData.uid}`)
.child(`${sessionId}-${i}`);
fs.readFile(image, 'base64')
.then(data => {
return Blob.build(data, {type: `${mime};BASE64`});
})
.then(blob => {
uploadBlob = blob;
return imageRef.put(blob, {contentType: mime});
})
.then(() => {
uploadBlob.close();
return imageRef.getDownloadURL();
})
基本上,我最多上传 3 张图像及其一些数据。为了确保我在添加帖子数据(写入 firestore)之前上传所有内容,我使用了 forEach ,在最后一次上传完成后,我调用操作来写入帖子数据。
HUX布斯
相关分类