【发布时间】:2022-01-08 13:19:18
【问题描述】:
我想做什么。
我目前正在使用 Nuxt、Laravel API 和 Firebase 身份验证创建一个餐厅预订网络应用程序。
我想做的是,
-
在 Firebase 身份验证中创建一个新用户帐户。
{ "email": "User's email address from input", "password": "User's password from input" } -
同时,在我的本地数据库中插入一个新的用户帐户,用户 uid 作为密码。
{ "name": "User's name from input", "email": "User's email address from input", "password": "User's uid from store/auth.js" }
问题
Firebase Auth 注册成功,如果没有 uid,本地数据库也会成功注册。 但是当我尝试添加 uid 时,我在 Laravel 日志中收到此错误。
1364 字段“一般错误:密码”没有默认值
我以为这个错误是因为异步处理而发生的,所以我在代码中添加了Async,但是结果并没有改变。
代码
// register.vue
<script>
import firebase from '~/plugins/firebase'
export default {
layout: 'auth',
data () {
return {
user: {
name: null,
email: null,
password: null,
}
}
},
methods: {
async register() {
this.$store.dispatch('auth/register',
{
name: this.user.name,
email: this.user.email,
password: this.user.password
}
)
.then(() => {
this.$store.dispatch('auth/onAuth')
})
.then(() => {
this.$axios.post('http://localhost:8000/api/v1/users',
{
name: this.user.name,
email: this.user.email,
password: this.$store.state.auth.userUid
}
)
})
.then(() => {
this.$router.push('/thanks')
})
},
}
}
</script>
// store/auth.js
import firebase from '~/plugins/firebase.js'
export const state = () => ({
userUid: '',
userEmail: '',
loggedIn: false,
})
export const actions = {
async register({ commit }, payload) {
firebase
.auth()
.createUserWithEmailAndPassword(payload.email, payload.password)
.then((result) => {
const user = result.user
commit('loginStatusChange', true)
console.log('Regist a user was successful')
commit('setUserUid', user.uid)
commit('setUserEmail', user.email)
})
},
onAuth({ commit }) {
firebase.auth().onAuthStateChanged(user => {
user = user ? user : {}
commit('setUserUid', user.uid)
commit('setUserEmail', user.email)
commit('loginStatusChange', user.uid ? true : false)
})
}
}
export const mutations = {
loginStatusChange(state, status) {
state.loggedIn = status
},
setUserUid(state, userUid) {
state.userUid = userUid
},
setUserEmail(state, userEmail) {
state.userEmail = userEmail
}
}
export const getters = {
getUserUid(state) {
return state.userUid
},
getUserEmail(state) {
return state.userEmail
}
}
环境
- Nuxt 2.15.8
- Laravel 框架 8.72.0
- MySQL 5.7.34
- Firebase 身份验证
【问题讨论】:
-
我认为问题在于您的操作不可组合。他们需要兑现承诺
-
使用 async 时,也要使用 await 语法。
标签: async-await axios firebase-authentication nuxt.js vuex