通常可能會想幫使用者儲存一些個人資訊,這時候,我們可以利用firestore來儲存這些資訊。
可以利用setDoc()新增資料,可以自訂document id。
import { doc, setDoc } from "firebase/firestore";
// Add a new document in collection "cities"
await setDoc(doc(db, "cities", "LA"), {
name: "Los Angeles",
state: "CA",
country: "USA"
});
當沒有提供document id時,會自動產生文件並產生文件id。
import { collection, doc, setDoc } from "firebase/firestore";
// Add a new document with a generated id
const newCityRef = doc(collection(db, "cities"));
// later...
await setDoc(newCityRef, data);
也可以利用addDoc()新增資料。
import { collection, addDoc } from "firebase/firestore";
// Add a new document with a generated id.
const docRef = await addDoc(collection(db, "cities"), {
name: "Tokyo",
country: "Japan"
});
console.log("Document written with ID: ", docRef.id);
我們修改一下註冊頁面,新增一個姓名欄位
const account = reactive({
**name: '',**
email: '',
password: ''
})
<template>
<v-container>
**<v-text-field v-model="account.name" label="姓名"></v-text-field>**
<v-text-field v-model="account.email" label="帳號"></v-text-field>
<v-text-field v-model="account.password" label="密碼" type="password"></v-text-field>
<v-alert :type="state.status" title="訊息" :text="state.message"></v-alert>
<v-btn color="primary" @click="handleClick('signIn')">登入</v-btn>
<v-btn color="secondary" @click="handleClick('signOut')">登出</v-btn>
<v-btn color="primary" @click="handleClick('signUp')">註冊</v-btn>
</v-container>
</template>
import { doc, getFirestore, setDoc } from 'firebase/firestore';
const auth = getAuth(app)
**const db = getFirestore(app);**
新增資料有兩個方法:addDoc()、setDoc(),當我們要讓firestore產生document的id,就使用addDoc(),因為我們要利用uid作為document的id,所以,使用setDoc()
透過setDoc()新增一筆資料,並利用uid作為document的id,未來方便我們取得資料。
state.message = '註冊中...'
const res = await createUserWithEmailAndPassword(auth, account.email, account.password)
const uid = res.user.uid;
**await setDoc(doc(db, "user", uid), {
name: account.name
});**
if (res.user) {
state.status = 'success'
state.message = '註冊成功'
}