Vuexfire 와 함께 Vue 앱에서 Firebase 사용하기— 데이터 추가하기
5629 단어 vueprogrammingjavascriptwebdev
지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.
Vuefire 라이브러리를 사용하면 Vue 앱에서 바로 Firebase 데이터베이스 조작 기능을 추가할 수 있습니다.
이 기사에서는 Vuefire 및 Vuexfire를 사용하여 Vue 앱에 Cloud Firestore 데이터베이스 조작 지원을 추가하는 방법을 살펴보겠습니다.
타임스탬프
Timestamp.fromDate
메서드를 사용하여 문서에 타임스탬프를 추가할 수 있습니다.Cloud Firestore와 함께 Vuexfire를 사용할 때만 사용할 수 있습니다.
예를 들어 다음과 같이 작성할 수 있습니다.
db.js
import firebase from "firebase/app";
import "firebase/firestore";
export const db = firebase
.initializeApp({ projectId: "project-id" })
.firestore();
const { Timestamp, GeoPoint } = firebase.firestore;
export { Timestamp, GeoPoint };
main.js
import Vue from "vue";
import App from "./App.vue";
import { firestorePlugin } from "vuefire";
import { vuexfireMutations, firestoreAction } from "vuexfire";
import Vuex from "vuex";
import { db } from "./db";
Vue.use(Vuex);
Vue.use(firestorePlugin);
Vue.config.productionTip = false;
const store = new Vuex.Store({
state: {
events: []
},
mutations: {
...vuexfireMutations
},
actions: {
bindEventsRef: firestoreAction((context) => {
return context.bindFirestoreRef("events", db.collection("events"));
})
},
getters: {
events: (state) => {
return state.events;
}
}
});
new Vue({
store,
render: (h) => h(App)
}).$mount("#app");
App.vue
<template>
<div>{{events}}</div>
</template>
<script>
import { mapGetters, mapActions } from "vuex";
import { db, Timestamp } from "./db";
export default {
data() {
return {};
},
methods: {
...mapActions(["bindEventsRef"])
},
computed: {
...mapGetters(["events"])
},
async mounted() {
this.bindEventsRef();
await db.collection("events").add({
name: "event",
date: Timestamp.fromDate(new Date("2029-09-14"))
});
}
};
</script>
타임스탬프를 추가하기 위해
Timestamp.fromDate
메서드를 호출합니다.그리고
bindEventsRef
를 호출하여 events
컬렉션을 스토어의 events
상태와 동기화했습니다.그런 다음 getter로
events
상태를 얻습니다.그러면
events
상태는 다음과 같습니다.[ { "name": "event", "date": { "seconds": 1884038400, "nanoseconds": 0 } } ]
toDate
를 호출하여 Timestamp
객체를 사람이 읽을 수 있는 날짜로 되돌릴 수도 있습니다.<template>
<div>
<div v-for="e of events" :key="e.id">{{e.date.toDate()}}</div>
</div>
</template>
<script>
import { mapGetters, mapActions } from "vuex";
import { db, Timestamp } from "./db";
export default {
data() {
return {};
},
methods: {
...mapActions(["bindEventsRef"])
},
computed: {
...mapGetters(["events"])
},
async mounted() {
this.bindEventsRef();
await db.collection("events").add({
name: "event",
date: Timestamp.fromDate(new Date("2029-09-14"))
});
}
};
</script>
참고문헌
문서에 다른 문서의 참조를 저장할 수 있습니다.
예를 들어 다음과 같이 작성할 수 있습니다.
main.js
import Vue from "vue";
import App from "./App.vue";
import { firestorePlugin } from "vuefire";
import { vuexfireMutations, firestoreAction } from "vuexfire";
import Vuex from "vuex";
import { db } from "./db";
Vue.use(Vuex);
Vue.use(firestorePlugin);
Vue.config.productionTip = false;
const store = new Vuex.Store({
state: {
books: []
},
mutations: {
...vuexfireMutations
},
actions: {
bindBooksRef: firestoreAction((context) => {
return context.bindFirestoreRef("books", db.collection("books"));
})
},
getters: {
books: (state) => {
return state.books;
}
}
});
new Vue({
store,
render: (h) => h(App)
}).$mount("#app");
App.vue
<template>
<div>{{books}}</div>
</template>
<script>
import { mapGetters, mapActions } from "vuex";
import { db } from "./db";
export default {
data() {
return {};
},
methods: {
...mapActions(["bindBooksRef"])
},
computed: {
...mapGetters(["books"])
},
async mounted() {
this.bindBooksRef();
await db.collection("books").add({
title: "foo",
author: db.collection("authors").doc("james-smith")
});
}
};
</script>
우리는 컬렉션을
db.collection
로 얻습니다.그런 다음 반환되는 것과 함께
doc
문서의 ID를 참조하는 인수로 사용하여 authors
를 호출합니다.결론
Firebase 데이터베이스 컬렉션에 문서를 추가할 수 있으며 Vuex 상태를 컬렉션에 바인딩하면 Vue 앱에 자동으로 반영됩니다.
Reference
이 문제에 관하여(Vuexfire 와 함께 Vue 앱에서 Firebase 사용하기— 데이터 추가하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aumayeung/using-firebase-in-a-vue-app-with-vuexfire-adding-data-43g1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)