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

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

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

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

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Cloud Firestore

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Q&A

1回答

622閲覧

firebaseのfirestoreからのデータ取得ができません。

tetesan

総合スコア0

Firebase

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

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Cloud Firestore

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

0グッド

0クリップ

投稿2020/05/23 12:03

編集2020/05/23 12:08

前提・実現したいこと

ReactNative,expo,firestoreを用いて開発をしています。
当方、プログラミング初心者で基礎からわかっていない部分も多く、質問内容以外にもご指摘いただけたら幸いです。

さて、この度firebaseのfirestoreから非同期にデータを取り出し、配列で返す関数を作りたいのですが、うまくいきません。
通信には成功していると思うのですが、resultsがうまく返りません。

また、非同期処理の記述にも自信がありません。

該当のソースコードは以下でございます。

該当のソースコード

import firebase from 'firebase';
import 'firebase/firestore';

export const getColumns = () => {
const db = firebase.firestore();
let columns = null;

try { db.collection("columns").onSnapshot(async (snapshot) => { await Promise.all(snapshot.docs.map((doc) => { let title = doc.get('title').replaceAll('\n', '\n'); return { id: doc.get('id'), title: title, content: doc.get('content') }; })).then(results => { columns = results; }).catch(reject => { console.log(reject); }); }) return columns; } catch ({ message }) { console.log(`データを取得できませんでした ${message}`); }

}

結果

nullが返ります。

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

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

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

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

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

guest

回答1

0

通信には成功していると思うのですが、resultsがうまく返りません。

こちらですが、何か成功していると思う理由などはありますでしょうか?
現在はログに何が表示されていますか?

.then(results => {
columns = results;
})

  • まず状況確認のために、こちらにconsole.log();を入れてみてはいかがでしょうか?

.catch(reject => {
console.log(reject);
})

  • またこちらは、.catch((error) => {に変更してみてください。

投稿2020/06/26 02:56

sunsunny-k

総合スコア80

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問