0
私はReact-native、Reduxを使用しています。イメージをストレージにアップロードした後のfirebase updateデータベース
NPM「firebase」:「^ 4.6.0」 「反応し、ネイティブ・ブロブをフェッチ」画像
私は画像をアップロードしてからfirebaseを使用してデータベースに画像のURLを追加しようとしていますがblobingため。
画像をストレージにアップロードしたり、データベースのデータを更新したりすることはできますが、私はその両方を行うことはできません。
は(成功/失敗)だけでは100%の作業機能の両方を、私は、データを更新するために呼び出して画像をアップロードし、応答を取得しなかった後、私は次々にそれらを呼び出すことはできません。 明確にする必要はありますか?リセット?もしそうなら、どのように?
アップロード画像:
const db = firebase.firestore();...
db.collection("reports").doc(uId).collection("user-reports")
.add({
"title": "report title...",
"discription": "discription..."})
.then(() => {
console.log("Document successfully written!");
dispach({
type: types.FIREBASE_REPORT_ADD,
payload: "Added Report"
})
})
.catch((err) => {
console.error("Error writing document: ", err);
});
アップロードデータ:
const imageRef = storageRef.child(`images/${uId}/${CREATION_TIME}`);
return (dispach) => {
fs.readFile(imagePath, 'base64')
.then((data) => {
//console.log(data);
return Blob.build(data, { type: `${mime};BASE64` })
})
.then((blob) => {
uploadBlob = blob;
return imageRef.put(blob, { contentType: mime })
})
.then(() => {
uploadBlob.close()
return imageRef.getDownloadURL()
})
.then((url) => {
console.log("some url:",url)
dispach({
type: types.FIREBASE_REPORT_IMAGE_UPLOADED,
payload:url
})
})
.catch((error) => {
console.log("Blob err: ",error);
dispach({
type: types.FIREBASE_REPORT_IMAGE_UPLOADED,
payload:null
})
});
}
ストレージへのアップロード完了のコールバックが必要です。これを使用して、ファイルのURLをデータベースに書き込みます。これはかなり一般的な方法です。それに問題はありますか?あなたはもっと具体的になりますか?多分あなたのコードを表示しますか? –
あなたはfirebase持っているSDKを使用していますか? –
私はfirebaseを使っています ":"^4.6.0 "" react-native-fetch-blob " – amos