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 
     }) 
}); 
} 
+1

ストレージへのアップロード完了のコールバックが必要です。これを使用して、ファイルのURLをデータベースに書き込みます。これはかなり一般的な方法です。それに問題はありますか?あなたはもっと具体的になりますか?多分あなたのコードを表示しますか? –

+0

あなたはfirebase持っているSDKを使用していますか? –

+0

私はfirebaseを使っています ":"^4.6.0 "" react-native-fetch-blob " – amos

答えて

0

私は "BLOBを" 生きとBASE64で私の画像をアップロードして、それを修正しました。そのような :

ref.putString(message, 'base64').then(function(snapshot) { 

はconsole.log( 'base64文字列をアップロード!'); });

スムーズに作業する

関連する問題