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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1342閲覧

vue.js でfirebaseのデータの取得結果から、別の配列に格納したいが、配列にアクセスできない?

MataSema

総合スコア15

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/01/09 23:17

編集2022/01/10 01:03

すみません。
最近、vue.js(nuxt.js)を始めたものです。

vue.jsのfirestore  のデータの扱いについて

質問がございます。
どなたかおわかりになる方、お答えいただけると嬉しいです。

↓↓↓↓↓↓

[やりたいこと]
firestoreのDBから取得データを配列に格納して使いまわしたい。

※補足
このdb(firestore)から取得した値はpromiseの処理のようです。
thenのなかで、配列に入れたdataをthenの外でも使いまわしたい。

あるいは、これとは、別に、promiseじゃない方法で、取得する方法を知りたい。

[問題概要]
firestoreから取得したデータが配列に格納できる。
おそらくデータは取得できているが、
data[(要素数)]の形で配列にアクセスできない。

[環境]
vue.js 2.6.14
firebase 8.2.3

[コード]
firestoreデータ取得をget.thenにてデータを取得
thenの中で取得したデータをループして、
その中で、宣言したdata配列に格納する。

 ↓

<script> import firebase from '@/plugins/firebase'; import Export from "../components/util/export"; //外部ファイル呼び出しテスト export default { name: "App", mounted() { this.db = firebase.firestore() data = [] this.userRef = this.db.collection('users') this.userRef .get() .then((querySnapshot) => { querySnapshot.forEach((doc) => { data.push(doc.data()) }) }) console.log(data) //データは取得できている console.log(data[0]) //undifinedになる。 }, }; </script>

[問題の詳細]

firestoreから取得したデータは取得できているが、
data[(要素数)]にアクセスできない。
※画像参照      取得した配列。chromeのコンソールにて確認)配列に要素数がない? 
そもそも、data配列へのアクセス方法がわかっていないかもしれません。

[解決した問題]
data[(要素数)]の方法、もしくはそれ以外の方法でデータにアクセスしたい。

すみませんが、何卒、宜しくお願い致します。

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記のようにasync/awaitを使ってみてはいかがでしょうか。

js

1(略) 2 async mounted() { 3 4 this.db = firebase.firestore() 5 6 data = [] 7 8 this.userRef = this.db.collection('users') 9 10 const querySnapshot = await this.userRef.get() 11 12 querySnapshot.forEach((doc) => { 13 data.push(doc.data()) 14 }) 15 // 以下、dataを使用した処理を書く。 16 console.log(data) 17 console.log(data[0]) 18 } 19(以下略)

投稿2022/01/10 03:12

編集2022/01/10 03:13
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

MataSema

2022/01/10 06:41

ありがとうございます!! いただいたサンプルのasync/awaitで無事データが取得できました。 jsの非同期の処理がちゃんとできていないなと我ながら実感しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問