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

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

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

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

Firebase

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

Q&A

解決済

1回答

673閲覧

【Vue×firebase】データの追加

_chii

総合スコア50

Vue.js

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

Firebase

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

0グッド

0クリップ

投稿2023/01/08 09:35

前提

  • clickイベントを使用してfirebaseのDBに入力したデータを追加したい
  • 現状はfirebaseのデータを反映させることはできている
  • addThreadメソッドでthreadListに追加することはできているけどfirebaseのDBには追加されてない(ブラウザに反映されてもブラウザ上で追加したデータはリロードすると消えてしまう)

実現したいこと

リストaddThreadメソッドでthreadListに追加し、firebaseのDBにも反映させたい
※キャプチャのデータはfirebaseで直接追加したもの、ブラウザからの追加からは実現できていない

イメージ説明

イメージ説明

該当のソースコード

<script setup lang="ts"> import { ref } from 'vue' import { db } from '../firebaseConfig' import { collection, getDocs } from 'firebase/firestore' const title = ref('') const text = ref('') const threadList = ref() const getThreadList = async () => { const query = await getDocs(collection(db, 'thread')); threadList.value = query.docs.map((doc) => ({ ...doc.data(), id: doc.id, })); }; getThreadList(); const addThread = () => { threadList.value.push({ title: title.value, text: text.value }); title.value = ''; text.value = ''; }; </script> <template> <div id="app"> <h2>スレッド一覧</h2> <ul> <li v-for="(thread, index) in threadList" :key="index"> <router-link :to="`/post/${index}`"> <h3>{{ thread.title }}</h3> </router-link> <p>{{ thread.text }}</p> </li> </ul> <input type="text" @keypress.enter="addThread" v-model="title"><br><br> <textarea cols="60" rows="10" @keypress.enter="addThread" v-model="text" /><br> <button @click="addThread">追加</button> </div> </template>

試したこと

threadListの配列データに追加する処理は正しいはずだけど、それをDBに反映させる方法がわからずfirebaseのメソッドを使用する必要があると推測addやsetなどの情報が見つけることができたもののそれを使用した実装方法について明確なやり方について理解することができませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

自己解決

addDocメソッドを使用することで解決ができた

const addThread = async () => { threadList.value.push({ title: title.value, text: text.value }); await addDoc(collection(db, 'thread'), { title: title.value, text: text.value, }); title.value = ''; text.value = ''; };

投稿2023/01/08 09:41

_chii

総合スコア50

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問