私はFirebase Storageを使用して画像URLを作成し、Firebaseデータベースに送信しています。私は 'currentUser'とFirebase Storageの両方の子参照がハードコードされているときにうまく動作します。しかし、Firebaseデータベースから実際のcurrentUserを取得し、子参照/参照に流体名を付けるにはどうすればよいですか?私はこれについて、Javaでいくつかの答えを見てきました。しかしJavascriptではない。ここに私のコードです:firebase storage imageのソフトコード化方法url's
// openImage() is the function that grabs a photo from the camera roll
// I'm using react-native btw, so some of this code is handling the
// blob.
openImage() {
this.setState({ loading: true });
const Blob = RNFetchBlob.polyfill.Blob;
const fs = RNFetchBlob.fs;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest
window.Blob = Blob
// if I use this code, it won't return the urls: const {currentUser}
// = firebase.auth()
// So, I've got the 'currentUser' hardcoded in as "12345"
const { currentUser } = "12345"
// ImagePicker.openPicker() is just a library to access the camera roll
ImagePicker.openPicker({
width: 400,
height: 300,
cropping: true,
mediaType: 'photo',
}).then(image => {
const imagePath = image.path;
let uploadBlob = null;
const storage = firebase.storage();
const storageRef = storage.ref(currentUser);
//I also have the .child reference name hardcoded as 'dp.jpg'
const imageRef = storageRef.child('dp.jpg');
const mime = 'image/jpg';
fs.readFile(imagePath, '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();
})
.then((url) => {
const { image } = this.props;
this.props.entryUpdate({ prop: 'image', value: url })
});
});
}
画像のURL
はその後Firebase、データベースに渡されると「画像」のキーと「dp.jpg」の値として設定されます。ハードコーディングでは、これは正常に動作しますが、1つのイメージと1人のユーザ(またはFirebase Storageのフォルダ)に対してのみです。私はFirebaseリアルタイムデータベースは、のように項目にそれ自身のID番号を割り当てます方法を知っています:。 item.keyがFirebaseによって生成されるconst { currentUser } = firebase.auth();
const item = firebase.database().ref(`/users/${currentUser.uid}/items`)
.push();
return() => {
item.set({ make, model, year, uid: item.key, image })
、したがってがでハードコードされている必要はありません、それはですイメージの子の名前と 'currentUser'の両方でFirebase Storageでこれを達成することは可能ですか?そして、モバイルアプリだけがデータベースからURLを取得しているので、Firebaseストレージ内の「currentUser」フォルダに各画像を割り当てる必要がありますか?
'.once( 'value')'を 'storage.ref(currentUser)'にチェーンしようとしましたか?または、それが返すものを記録しようとしましたか?ただ仮定します。ドキュメントの例によると、 'const item = firebase.storage()。ref()。child(currentUser)'を実行するべきではありませんか? – parohy