teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コードの詳細を追記致しました。

2019/03/20 23:59

投稿

Khy
Khy

スコア118

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ログイン中のユーザーの情報をfirebaseから取得し、Vueのdataにオブジェクトとして格納したいのですが方法が分からず困っております。
4
4
 
5
- firebaseには以下のようなusersコレクションがあり、その情報をcurrentUser.ageやcurrentUser.nameなどのような形で使いたいですがcreated()の中にどのように記述したらcurrentUserにオブジェクトの形でデータを入れれますでしょうか?
5
+ firebaseには以下のようなusersコレクションがあり、その情報をcurrentUser.ageやcurrentUser.nameなどのような形で使いたいです
6
6
 
7
7
  usersコレクション
8
8
  ------taro@taro.comドキュメント
@@ -12,7 +12,14 @@
12
12
  name: '花子',
13
13
  age: 25
14
14
 
15
+ 以下のようなコードで、console.log(doc.data());をした時にはきちんとコンソールにオブジェクトのデータが表示されるのですが、this.currentUser = doc.data();をすると次のエラーが出ます。
15
16
 
17
+ Error getting document: TypeError: Cannot set property 'a' of undefined
18
+
19
+ 原因がわかる方がいらっしゃいましたらお知恵を貸していただけると助かります。
20
+ またもっといい書き方があればお教えいただけると幸いです。
21
+ 宜しくお願い致します。
22
+
16
23
  ```ここに言語を入力
17
24
  <script>
18
25
  import firebase from 'firebase'
@@ -21,17 +28,26 @@
21
28
  export default {
22
29
  data () {
23
30
  return {
31
+ currentUserEmail: '',
24
32
  currentUser: {}, //ここに現在のユーザー情報を格納したい
25
33
  }
26
34
  },
27
35
 
28
36
  created() {
29
37
  if(firebase.auth().currentUser){
38
+ this.currentUserEmail = firebase.auth().currentUser.email; //ログイン中ユーザのメールアドレスを取得
39
+ var currentUserDoc = db.collection('users').doc(this.currentUserEmail); //ログイン中ユーザのドキュメントを代入
40
+
41
+    currentUserDoc.get().then(function(doc) {
42
+ if (doc.exists) {
43
+
44
+ console.log(doc.data());
30
-      //ここにどう書けばいいかわかりません...
45
+ this.currentUser = doc.data();
46
+
47
+ } else {...}
31
48
  }
32
49
  }
33
50
  }
51
+ </script>
34
52
 
35
- ```
53
+ ```
36
-
37
- お知恵を貸していただけると助かります。宜しくお願い致します。