Vue.js、Vuetify、firebaseを使ってWebサービスを開発しております。
ログイン中のユーザーの情報をfirebaseから取得し、Vueのdataにオブジェクトとして格納したいのですが方法が分からず困っております。
firebaseには以下のようなusersコレクションがあり、その情報をcurrentUser.ageやcurrentUser.nameなどのような形で使いたいです。
usersコレクション
------taro@taro.comドキュメント
name: '太郎',
age:18
------hanako@hanako.comドキュメント
name: '花子',
age: 25
以下のようなコードで、console.log(doc.data());をした時にはきちんとコンソールにオブジェクトのデータが表示されるのですが、this.currentUser = doc.data();をすると次のエラーが出ます。
Error getting document: TypeError: Cannot set property 'a' of undefined
原因がわかる方がいらっしゃいましたらお知恵を貸していただけると助かります。
またもっといい書き方があればお教えいただけると幸いです。
宜しくお願い致します。
<script> import firebase from 'firebase' import db from '@/fb' export default { data () { return { currentUserEmail: '', currentUser: {}, //ここに現在のユーザー情報を格納したい } }, created() { if(firebase.auth().currentUser){ this.currentUserEmail = firebase.auth().currentUser.email; //ログイン中ユーザのメールアドレスを取得 var currentUserDoc = db.collection('users').doc(this.currentUserEmail); //ログイン中ユーザのドキュメントを代入 currentUserDoc.get().then(function(doc) { if (doc.exists) { console.log(doc.data()); this.currentUser = doc.data(); } else {...} } } } </script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。