我正在尝试从方法函数内部的函数访问名为data variable
的{{1}}。但是据错误消息所知,我认为它无法从localUser
访问localUser
。
这是我收到的错误消息:
未捕获(承诺)TypeError:无法在auth.js:1361的eval(Form.vue?c13f:100)处设置未定义的属性'localUser'
我用以下注释标记了代码中的问题所在:
//错误-无法访问this.localUser
我尝试过的事情:
data
将其插入this.$data.localUser
函数之后的.then
函数中,如下面的代码所示,该函数实际上是有效的,但我无法使用firebase.auth().onAuthStateChanged( (user) => {}
来做到这一点,我必须在以下位置进行操作:
firebase.auth()。onAuthStateChanged((用户)=> {}
.then
我使用的代码所在的问题出在第96行:
firebase.auth().createUserWithEmailAndPassword(this.email, this.password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorMessage);
}).then(() => {
firebase.auth().onAuthStateChanged( (user) => {
if (user) {
// If already signed in
const db = firebase.firestore();
this.localUser = user;
console.log(this.localUser);
db.collection("users").doc(this.localUser.uid).set({
firstName: this.firstName,
lastName: this.lastName,
student: this.student,
teacher: this.teacher,
email: this.email,
password: this.password
})
.then(function() {
console.log("Document successfully written!");
})
.catch(function(error) {
console.error("Error writing document: ", error);
});
}
})
})
答案 0 :(得分:0)
我不明白您为什么要在错误处理程序中执行所有代码(至少显示的所有代码),但是您无法访问Vue上下文的原因是错误处理程序[为了清晰起见而重新格式化] :
firebase.auth()
.createUserWithEmailAndPassword(this.email, this.password)
.catch(function(error) {
// all your code is here
})
您可以通过将其更改为箭头功能来使上下文匹配:
firebase.auth()
.createUserWithEmailAndPassword(this.email, this.password)
.catch((error) => {
// all your code is here
})