gpt4 book ai didi

javascript - 创建用户时将数据写入 Firestore 不起作用

转载 作者:行者123 更新时间:2023-12-04 07:15:32 26 4
gpt4 key购买 nike

我正在使用 VueCLI 和 Firebase(Auth 和 Firestore)。
本质上,该函数被正确调用并在数据库中正确注册用户,但是,在 .createUserWithEmailAndPassword 函数上没有调用 promise (例如 .then 和 .catch)。
没有返回错误,也没有在 firestore 中注册任何东西,这真的让我很难过。
但是,有时它会完全按预期工作??但经常不规律。

submit () {
var v = this

firebase.auth().createUserWithEmailAndPassword(v.form.email, v.form.password)
.then(function () {
// set account doc
var account = {
email: v.form.email,
name: v.form.name,
picture: v.form.picture
}
db.collection('Users').doc(v.form.email).set(account).then(() => {
console.log('Database Details Defined')
// Set user display name
v.$store.commit('setUserDisplayName', v.form.name)
// Set user display name
v.$store.commit('setUserImage', v.form.picture)
// Set user as signed in
v.$store.commit('changeLoginState', true)
// Set user email
v.$store.commit('setUserEmail', v.form.email)

// console.log('Vue Store Details Defined')

localStorage.setItem('name', v.$store.state.displayName)
localStorage.setItem('email', v.$store.state.email)
localStorage.setItem('userImage', v.$store.state.userImage)
localStorage.setItem('loggedin', v.$store.state.isLoggedin)

// console.log('Local Storage Details Defined')

// Redirect user to dashboard
v.$router.replace('/')
v.registering = false
}).catch((error) => {
v.databaseError = 'Database Error: ' + error.code + ' - ' + error.message
v.registering = false
})
})
.catch(function (error) {
v.registrationError = 'Registration Error: ' + error.code + ' - ' + error.message
v.registering = false
})
}
enter image description here

最佳答案

您有一个功能 getDB()返回 Firestore 实例的值,所以 getDB().collection("users")...可能按预期工作。我看不到哪里db在此特定文件中初始化,所以 console.log(db)可能有助于检查它的值(value)。

firebase.firestore().collection('Users').doc(v.form.email).set(account)
这按预期工作,因为 firebase.firestore()肯定会返回 Firestore 实例。我建议直接导出 Firebase 服务,而不是在函数中。例如,您可以创建一个文件 firebase.js并在那里初始化 Firebase:
var firebase = require('firebase/app')
require('firebase/firestore')

const firebaseConfig = { }

if (!firebase.apps.length) {
firebase.initializeApp(config);
}

const auth = firebase.auth()
const db = firebase.firestore()

export {db, auth}
如图所示,您只需初始化 Firebase 一次。它会比在 getDB 中初始化要清楚得多功能。

关于javascript - 创建用户时将数据写入 Firestore 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68795879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com