質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

235閲覧

Reduxで取得してきたデータがエラーになってしまう

k10a

総合スコア35

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/01/17 22:35

Redux(React)と、Firestoreを使ってユーザーと、それに関連したプロフィール情報を取得して表示しようと考えています。コンソール上では、いずれの値も確認できているのですがなぜか表示しようとすると下記のようなエラーが生じてしまいます。

Cannot read property 'content' of undefined

Firestoreでは、usersと、それに関連したprofilesコレクションをそれぞれ引っ張ってきます。

action部分

Javascript

1export function fetchUser(id) { 2 return dispatch => { 3 usersRef 4 .doc(id) 5 .get() 6 .then(doc => { 7 profilesRef 8 .where("uid", "==", id) 9 .where("status", "==", doc.data().current_status) 10 .get() 11 .then(function(querySnapshot) { 12 querySnapshot.forEach(function(snapshot) { 13 const profileItems = { ...doc.data(), profiles: snapshot.data() }; 14 dispatch({ 15 type: FETCH_USER, 16 payload: profileItems 17 }); 18 }); 19 }); 20 }); 21 }; 22}

reducer部分

JavaScript

1import { FETCH_USER } from "../actions"; 2 3const initialState = {}; 4 5export default (state = initialState, action) => { 6 switch (action.type) { 7 console.log("action", action.payload) 8 // ここではUserrも、Profileもちゃんと取れてきているのが確認できている 9 case FETCH_USER: 10 return action.payload; 11 12 default: 13 return state; 14 } 15};

roooot reducer部分

Javascript

1import { createStore, applyMiddleware, combineReducers } from "redux"; 2import UsersReducer from "./reducer_users.js"; 3 4const rootReducer = combineReducers({ 5 users: UsersReducer, 6}); 7 8const store = createStore(rootReducer, applyMiddleware(reduxThunk)); 9export default store;

● Profile部分は取れてきている。

{content: "Hello world", status: 2}

container部分

JavaScript

1function mapStateToProps({ users }) { 2 console.log("content", user.profiles.content) 3 return { user: users, profiles: user.profiles }; 4}

ここにきて、冒頭に書いたUndefinedエラーとなってしまっています。そもそも、Firestoreで取り出した時にsnapshooot.data()が配列だから取り出せないのかとも思ったのですが、user.profilesまでは正常に●部分のように表示されています。

強引に、Json化してしまおうと思い、

JavaScript

1 const profiles_json = JSON.stringify(users.profiles); 2 console.log("test", JSON.parse(profiles_json));

を試してみましたが、Reactではそれは使えないと怒られてしまいました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問