注冊表的想法是
- 將用戶電子郵件和密碼添加到 firebase auth,這是成功的,然后
- 使用它們
uid作為檔案 ID添加新檔案并插入街道欄位和值;到profile收集,失敗沒有錯誤。
用戶和電子郵件被添加到 firebase 控制臺中的 auth 用戶,但檔案寫入仍然不成功,控制臺上也沒有錯誤。
撓我的頭有一段時間了。
這是我的代碼
<template>
<v-form @submit.prevent="createUser">
<v-text-field
v-model="register.email"
label="Email"
required
/>
<v-text-field
v-model="register.password"
label="Password"
required
/>
<v-text-field
v-model="register.street"
required
label="Street"
/>
<v-btn
type="submit"
>
Register
</v-btn>
</v-form>
</template>
<script>
import Vue from 'vue'
import { createUserWithEmailAndPassword, onAuthStateChanged } from 'firebase/auth'
import { doc, setDoc } from 'firebase/firestore'
import { auth, db } from '~/plugins/firebase.js'
export default Vue.extend({
data () {
return {
register: {}
}
},
methods: {
async createUser () {
await createUserWithEmailAndPassword(
auth,
this.register.email,
this.register.password
).catch((error) => {
console.log(error.code)
console.log(error.message)
})
onAuthStateChanged(
auth,
(user) => {
if (user) {
const ref = doc(db, 'profile', user.uid)
const document = {
street: this.register.street
}
try {
setDoc(ref, document)
} catch (e) {
alert('Error!')
console.error(e.code)
console.error(e.message)
}
}
}
)
}
}
})
</script>
沒有限制的firestore規則
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write;
}
}
}
uj5u.com熱心網友回復:
嘗試如下:
async createUser () {
await createUserWithEmailAndPassword(
auth,
this.register.email,
this.register.password
)
.then((user) => {
this.writeToFirestore(user)
})
.catch((error) => {
console.log(error.code)
console.log(error.message)
})
},
async writeToFirestore(user) {
if (user) {
const ref = doc(db, 'profile', user.id)
const document = {
street: this.register.street
}
try {
setDoc(ref, document)
} catch (e) {
alert('Error!')
console.error(e.code)
console.error(e.message)
}
}
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329002.html
標籤:javascript 火力基地 Vue.js 谷歌云firestore nuxt.js
