firebase.firestore()
.collection("firstCollection").doc("firstDoc")
.collection("secondCollection").add(dataToAdd);
// firebase.js
// ..
export const dbService = firebase.firestore();
export const bookRecordRef = dbService.collection("bookRecord");
์ด์ ํฌ์คํธ์์ Vue.js ํ๋ก์ ํธ์์ firebase๋ฅผ ์ฐ๊ฒฐํด ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ค๋๋ฐ, ์ค๋์ ๊ฑฐ๊ธฐ์ ์ด์ด ๊ณ์ธต์ ๊ตฌ์กฐํ๋ฅผ ์กฐ๊ธ ๋ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค. ๊ฐ๋จํ book tracker web app์ ๋ง๋๋ ์ค์ธ๋ฐ, ์๋ ์ด๋ฏธ์ง์ฒ๋ผ bookRecord๋ผ๋ ์ปฌ๋ ์ ๋ด์ ์ ์ ์ ๊ณ ์ ํ uid๋ฅผ ์ด๋ฆ์ผ๋ก ํ๋ doc(์ปฌ๋ ์ ์ ํ์ ๋จ์)์ด ์๊ณ , ๊ทธ ์์ bookInfo๋ผ๋ collection์ ๊ฐ๋๋ก ํ๊ณ ์ถ์๋ค. app์ด ์ปค์ง๋ฉด ์ ๋ฆฌํ๊ธฐ๊ฐ ํ๋ค ๊ฒ ๊ฐ์ ์ด๋ ๊ฒ ๋ฏธ๋ฆฌ ๋๋์ด๋ดค๋๋ฐ, ๊ณต์ ๋ฌธ์๋ฅผ ์ ๋๋ก ์ฝ์ง ์๊ณ collection ์๋์ ๋ ๋ค๋ฅธ collection์ผ๋ก ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ํ๋๊น ๋น์ฐํ ์ ๋๋ค (..^^)
๊ณต์ ๋ฌธ์๋ firestore>data-model ํญ๋ชฉ์ ์ ๋์์๋ค. ์๊น ์ปฌ๋ ์ ์์ ์ปฌ๋ ์ ์ ๋ฃ์ผ๋ ค๊ณ ์๋ํ๋ ๊ฒ์ ๊ณต์ ๋ฌธ์์์๋ "์ปฌ๋ ์ ์ ์ค๋ก์ง ๋ฌธ์(doc)๋ง ํฌํจํ๋ค"๊ณ ์ ์ค๋ช ๋์ด ์์ด์, ์ ํ๋ ธ๋์ง ๋ช ํํ๊ฒ ์ ์ ์์๋ค.
๋ํ, ๊ฐ์ด ์๋ ์์ ํ๋๋ฅผ ํฌํจํ๊ฑฐ๋, ๋ค๋ฅธ ์ปฌ๋ ์ ์ ํฌํจํ ์ ์๋ค.
๋ฌธ์์ ์์ ๋ฅผ ๋ฐ๋ผ์, ๋๋ ์๋์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
import { bookRecordRef } from "@/firebase";
import { parseTime } from "@/utils/index";
export default {
props: ["userUID"],
data() {
return {
cardForm: {
title: "",
writer: "",
genre: "",
quote: "",
review: "",
created: ""
}
}
},
//...
methods: {
async onSubmit() {
try {
this.cardForm.created = parseTime(new Date(Date.now()));
await bookRecordRef
.doc(`${this.userUID}`)
.collection("bookInfo")
.add(this.cardForm);
} catch (err) {
// ์๋ฌ ์ฒ๋ฆฌ
}
},
}
}
์ด๋, bookRecordRef๋ firebase๋ก๋ถํฐ ๋ฐ๋ก importํด์ฃผ๋๋ฐ, ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ํด์ฃผ๊ธฐ ์ํด์ firebase.js์ ๋ฏธ๋ฆฌ collection์ ๋ฑ๋กํด๋์๋ค.
// firebase.js
export const dbService = firebase.firestore();
export const bookRecordRef = dbService.collection("bookRecord");
ํ์ด์ฐ๋ฉด ์๋์ ๊ฐ๋ค.
firebase.firestore().collection("firstCollection").doc("firstDoc")
.collection("secondCollection").add(dataToAdd);
์ปฌ๋ ์ ์ ์ํ.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ฌ ๋๋,์๊น์ ๋น์ทํ ๋ฌธ๋ฒ์ ์ด๋ค. ๊ฐ์ง๊ณ ์ค๊ณ ์ ํ๋ collection ์งธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๊ณ ์ฌ ๋ ์๋์ฒ๋ผ ์์ฑํด์ฃผ๋ฉด ๋๋ค. bookRecord๋ฅผ ๋๋ฉฐ ๋ฏธ๋ฆฌ data()์ ์ ์ธํด๋ ๋น ๊ฐ์ฒด์ธ bookList์ pushํด์ค๋ค.
async getBookRecord(userUID) {
const bookRecord = await bookRecordRef
.doc(`${userUID}`)
.collection("bookInfo")
.get();
bookRecord.forEach(doc => {
const records = { ...doc.data() };
this.bookList.push(records);
});
},
'๐ฉโ๐ป > Firebase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[firebase] updateProfile is not a function Issue (0) | 2021.03.14 |
---|---|
[firebase] Vue.js + Element UI + Firebase : ์ ์ + ๊ฐ๋จํ ์ ๋ณด ๋ฑ๋ก (0) | 2020.12.17 |