Nuxt.js とFirebase のRealtime Database に複数要素を保存する
はじめに
過去記事でNuxt.js と Firebase の Realtime Database にデータを保存する処理を記載した。
ただ複数要素を保存する方法がわからなかった。
厳密にいえば、変動するデータ数の保存の仕方が不明だったので、解決してみた。
解決方法
TODOリストのようなものを作成し、配列とし格納したうえで保存をする。
コード
// template(抜粋)
<div class="form">
<input type="text" v-model="newDo">
<button @click="add(newDo)">追加</button>
</div>
<div class="todo_list" v-for="(todo, index) in todos" :key="index">
{{ todo }}
</div>
<button @click="saveContent(todos)">保存</button>
// script(抜粋)
<script>
import firebase from "~/plugins/firebase.js";
export default {
data() {
return {
newDo: '今日やったことは?',
todos: [],
};
},
methods: {
add: function(newDo) {
const todoItem = this.newDo;
this.todos.push(todoItem);
this.newDo = "";
},
saveContent: function(todos) {
firebase
.database()
// .ref(this.user.uid)
.ref()
.push({todos});
}
}
}
</script>
追加ボタンを押した時に、input に入力したデータを.push で todoItem の配列に格納する。
格納された配列をv-for="(todo, index) in todos" で表示する。
最後にその配列を保存する。
配列を使うことで解決した。