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

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

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

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Firebase

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

React.js

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

Q&A

解決済

1回答

2929閲覧

firebase firestoreにおけるgetDocの使い方について

joenobuo

総合スコア11

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Firebase

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

React.js

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

1グッド

0クリップ

投稿2022/02/27 16:35

編集2022/02/27 17:05

やっていること・実現したいこと

Web開発初心者です。
React + Firebaseでアプリ開発の学習を行っています。
Cloud Firestoreに登録したデータを取得して扱いたいです。

環境

React…ver17.0.2
firebase…ver9.6.6
npm…ver8.1.2

躓いている点・分からない点

getDoc関数を用いた下記のコードにて、『選択』ボタンを押した際に
コンソール上にFirebaseからデータを取得しようとしておりますが、
空のオブジェクトしか返ってきません。

JavaScript

1//firebase.js(設定ファイル) 2 3import firebase from "firebase/compat/app"; 4import "firebase/compat/firestore"; 5 6//xxx~には固有の値を設定 7const firebaseConfig = { 8 apiKey: "xxxxxxxxxxxxxxxx", 9 authDomain: "xxxxxxxxxxxxxxxx", 10 projectId: "xxxxxxxxxxxxxxxx", 11 storageBucket: "xxxxxxxxxxxxxxxx", 12 messagingSenderId: "xxxxxxxxxxxxxxxx", 13 appId: "xxxxxxxxxxxxxxxx", 14}; 15 16const firebaseApp = firebase.initializeApp(firebaseConfig); 17const db = firebaseApp.firestore(); 18 19export default db; 20

jsx

1//Test.jsx(firebaseからデータを取得するためのコンポーネント) 2 3import { getDoc, doc } from "firebase/firestore"; 4import db from "../../config/firebase"; 5 6//usersコレクションより値を取得 7const Test = () => { 8 const onClickSelect = async () => { 9 const docRef = doc(db, "users", "7hs6ApsWzOd6deqYGuNU"); 10 const docSnap = await getDoc(docRef); 11 console.log(docSnap); 12 }; 13 14 return ( 15 <div className="App"> 16 <button onClick={onClickSelect}>選択</button> 17 </div> 18 ); 19}; 20 21export default Test; 22

 

ちなみに、コンソール上では以下のように表示されます。

イメージ説明

どうすれば空でないオブジェクトを返すことが出来るでしょうか。
また、空のオブジェクトを返している原因は何なのでしょうか。
調べてみても分かりませんでした。
どなたかご教示頂けませんでしょうか。どうかお願いいたします。

akarisano👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ドキュメントのデータを取得したい場合は、console.log(docSnap.data());のようにdata()メソッドを追加します。
https://firebase.google.com/docs/reference/node/firebase.firestore.DocumentSnapshot#constructor

DocumentSnapshotオブジェクト(コード上のdocSnap)をコンソールで表示した時に省略されてしまうのは、console.log(obj)では2階層以上ある場合にそれより深い階層を省略するということが関係していそうです。
オブジェクト全てを見たい場合はconsole.dir(obj);を活用してみてください。
https://developer.mozilla.org/ja/docs/Web/API/Console/dir

投稿2022/02/28 02:10

akarisano

総合スコア32

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

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

joenobuo

2022/03/01 05:59

akarisano様、返信が遅れてしまい申し訳ございません。 data()メソッドで無事、ドキュメントのデータを取得することが出来ました!本当にありがとうございます!! v9の記事等が少なく、かなり探したのですが詰まっていたので本当に助かりました。 公式リファレンスの日本語翻訳が微妙に読みづらく避けていたのですが、次からは逃げないようにします…。 console.dir()についても詳細なご説明、ありがとうございました! オブジェクトの使い方やデバッグの手法等も分からないだらけなので、このような情報がとても嬉しいです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問