2016-11-21 13 views
0

私は、ユーザーがアイテムをアップロードできるマーケットプレイスウェブアプリを持っています。もちろん、これらのアイテムに関連付けられた画像も表示できます。問題は、ストレージバケットを整理することです、私はパスを作ることを考えていたitemImages/itemUID/image1.jpg。問題は、アイテムがデータベースに追加された後に自動的に生成されるitemUIDを取得することです。Firebase Storageへの新しいユニークなパスを作成し、それをデータベースに保存しますか?

ここでDBに項目を追加するために、私が持っているコードスニペットです:

itemsRef.push({ 
     title: title, 
     description: description, 
     tags: tags, 
     price: price, 
    }); 

、ここでは、私は画像を保存するために使用する単純化された機能です:あなたが見ることができるよう

var uploadTask = imageNewItemRef.child('fakeUID' + '/' + imageNames[x]).putString(images[x], 'base64'); 

uploadTask.on('state_changed', function(snapshot) { 

}, function(error) { 
    console.log("error uploading image"); 
}, function() { 
    var downloadURL = uploadTask.snapshot.downloadURL; 
    console.log(downloadURL); 
}); 

、私は」私はハードコードされたfakeUIDリンクをテスト目的で使用していますが、偽のものではなくuniqueUIDのアイテムをリンクする方法については手がかりがありません(検索には役立たない):/

何か助けていただければ幸いです!

答えて

2

悪い(書かれていない)JSの謝罪ですが、この作品のようなものでしょうか?

// create a new push ID and update the DB with some information 
var currentItemRef = itemsRef.push({ 
    title: title, 
    description: description, 
    tags: tags, 
    price: price, 
}).then(function() { 
    var storageRef = firebase.storage().ref(); 
    // currentItemRef.name is the unique key from the DB 
    return storageRef.child(currentItemRef.name + '/' + imageNames[x]).putString(images[x], 'base64'); 
}).then(function(snapshot) { 
    // update the DB with the download URL 
    return currentItemRef.update({ 
    url: snapshot.metadata.downloadURLs[0] 
    }); 
}).catch(function(error) { 
    console.error(error); 
}); 
関連する問題