環境
React.jsを使用し、firebaseにバックエンドを任せている
簡単なアプリの説明
ユーザーが写真を2枚以上投稿、他のユーザーが「いいね」と思った写真に投票入れる。
firebaseでのデータの状態
投稿された順に格納(投稿された時間がprimary keyの役目)
実現したい事
mypage内で、そのユーザーが投稿した写真を表示したい。
例えばuser_id = 2だと、画像内青線の情報を取ってきたい
(SQLで言う SLECT * ~~ではなく、SELECT urls, count ~~)
試したこと
const ref = firebase.database().ref('images'); const user_id = 2; //user_idが2の情報をimages以下から全て取得 ref.orderByChild("user_id").equalTo(user_id).once('value').then(snap => { let images = snap.val(); let keys = Object.keys(images); //key(ここでは日付)を配列化する。 let urls = []; // urls = keys.map(key => ( firebase.database().ref(`images/${key}/urls`).once('value').then(snap => { return snap.val(); }) )) console.log(urls); //[Promise, Promise]が返る(中身は格納されているが。。。)、後でmap使用する時などに"objectだからできないよー"などと怒られる //なんならmapで回してもurls内でまたmap使用する必要有 })
また https://youtu.be/ran_Ylug7AE?t=164 によると私の場合、下記のようにユーザーごとのurlを作成したほうがよいのか。。。
しかしこの場合、これから実装していくごとにこのようなchildを作成していくのは正直面倒と思っております。。
userImages : { user_id: 2 { urls: { 0: {url:http:// ......., count: 1}, 1: {http:// ........, count: 0} }, date: 2019-10-28 13:00:35 456 }, },
何かもっと良いデータの取り出し方、もしくはこの場合はFirebase自体使用しない方がいいなど意見がございましたらご回答宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。