vue.js初心者です。
解決したいこと
いいね機能を実装しています。ユーザーがすでにいいねしている場合にはtrueを返したいです。
現状
trueが1つしか返ってこない。
1, firestoreからpostを全て取得 db.collection('items')
↓
2, 現在ログインしているユーザーがいいねした投稿を取得 state.myfavs
↓
3, 1で取得したpostのidと2で取得したidが一致するかどうか
↓
4, 一致した場合はtrue,そうで無い場合はfalseを返すようにしています。
(今回のユーザーはposts全てにいいねしています)
getAll({commit, state}) { db.collection('posts').get().then(snapshot => { var tests = [] snapshot.forEach(doc => { const post = doc.data() post.id = doc.id state.myfavs.forEach(ele => { if(ele.id === post.id) { post.status = true } else { post.status = false } }) console.log('チェック', post) tests.push(post) }); commit('get', tests) }) },
console.log('チェック', post)の結果 {user_id: "TTNEIlVOz1coc4CfAWmCyND5kUO2", title: "おはよう", age: "11", id: "Ps2JPj9sH0uCJw9nYTDD", status: false} {user_id: "TTNEIlVOz1coc4CfAWmCyND5kUO2", title: "こんにちわ", age: "15", id: "oqTJKuIaN1UYqcpuJnrT", status: true}
確認したこと
itemとstate.myfavsの関係
post.idは取れてるか? yes
ele.idは取れてるか? yes
console.log('チェック', post)でpostのstatusでtrueが返ってきているか。 no
本来であればtrueの値で2つほどデータが帰ってき欲しいのですが、1つはfalse、もう1つはtrueになって返ってきてしまいます
仮説
forEachを2ヶ所使用(重なっている)しているのが怪しいと思っているのですが、解決できませんでした。
どなたか知恵を貸していただきたいです。
よろしくおねがします。
vue 2.6.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/17 21:15 編集