Javascript Vue+;Firebase:正在创建但在其他用户帐户下登录的用户

Javascript Vue+;Firebase:正在创建但在其他用户帐户下登录的用户,javascript,firebase,vue.js,firebase-authentication,Javascript,Firebase,Vue.js,Firebase Authentication,我在Firebase中遇到了一个非常奇怪的问题,如果我创建一个新用户时使用与前一个用户相同的密码,那么新用户将使用正确的信息创建,但将使用前一个用户帐户登录,并显示所有前一个用户的信息 我注销,然后使用新用户信息登录,然后才显示正确的信息。如果我使用相同的密码,新用户会在Firebase中覆盖以前的用户路径,但我似乎无法重新创建 我创建新用户的代码如下 createNewUser(){ //使用电子邮件和密码创建新用户。 var email=this.newUserEmail; var pass

我在Firebase中遇到了一个非常奇怪的问题,如果我创建一个新用户时使用与前一个用户相同的密码,那么新用户将使用正确的信息创建,但将使用前一个用户帐户登录,并显示所有前一个用户的信息

我注销,然后使用新用户信息登录,然后才显示正确的信息。如果我使用相同的密码,新用户会在Firebase中覆盖以前的用户路径,但我似乎无法重新创建

我创建新用户的代码如下

createNewUser(){
//使用电子邮件和密码创建新用户。
var email=this.newUserEmail;
var password=this.newUserPassword;
firebaseAuth.createUserWithEmailAndPassword(电子邮件,密码).catch(函数(错误){
//在这里处理错误。
var errorCode=error.code;
var errorMessage=error.message;
// ...
}).然后(()=>{
firebaseAuth.onAuthStateChanged(用户=>{
database.ref('/users/'+user.uid).set({
名称:this.newUserName,
电子邮件:this.newUserEmail,
伊斯雷塔勒:错,
伊萨明:错
});
});  
});
//推回家
push({path:'/'});
}
}
} 
然后,新创建的用户将被带到主主页,其中在
created(){}
方法中运行以下代码

//检查用户并发送一个操作,将isAuthed状态更改为true。
firebaseAuth.onAuthStateChanged(用户=>{
console.log(store.state.authentication);
console.log(用户);
存储调度('checkUser',用户);
})
最后,这将发送一个运行以下命令的操作

checkUser(上下文,用户){
if(user.uid){
commit('authUser',user);
//checkUser在应用程序初始化时运行一次。
//从firebase获取用户的isRetailer属性的值。
firebase.database()
.ref('/users/'+user.uid+'/isRetailer/'))
.once('value')。然后(snapshot=>context.commit('isRetailer'){
值:snapshot.val()
}));
//从Firebase获取当前用户的名称,并最终将其存储在Vuex状态。
firebase.database()
.ref('/users/'+user.uid+'/name/'))
.once('value')。然后(快照=>context.commit('getDisplayName'){
名称:snapshot.val()
}));
}否则{
log(“当前没有用户登录”);
}
},
因此,基本上我在做以下工作

  • 使用Firebase创建新用户
  • 将该用户持久化到Firebase数据库
  • 根据我从Firebase获得的一些数据更新Vuex状态
  • 当我刚刚用一个全新的密码创建一个新用户时,什么也没有发生,我在控制台中得到了以下信息

    但是,当我使用以前创建的密码创建另一个新用户时,它会在最后一个用户(使用新密码创建的用户)的信息下将我登录。但是,使用新密码创建的用户未存储在Firebase中

    这真是一个奇怪的问题,我真的不知道是什么原因造成的。uid错误是我在控制台中得到的唯一错误。我可以在创建用户时不使用承诺吗?我将此添加到中是因为用户没有被添加到firebase中,因为我无法在创建帐户后获取用户

    我真的需要另一双眼睛

    更新:当尝试使用我的信息登录时,我的信息似乎在firebase中被其他用户的信息覆盖。然后,我还会看到应用程序中的所有用户信息。然后,无论何时我尝试使用我的电子邮件/密码登录,从现在起,我将以John Steve的身份登录


    谢谢

    错误
    无法读取null的属性“uid”
    是因为firebase在初始化时可以为当前用户返回null。请参阅

    第二个问题是,我认为这是由于您在firebase完成保存用户之前更改了回家的路径(请记住,此任务是异步的)


    好啊我已经删除了
    firebaseAuth.onAuthStateChanged(user=>{})
    并将其替换为
    var user=firebaseAuth.currentUser在第一个回调中。然后,我使用
    router.push()
    方法删除第二个回调,并将
    router.push()
    移到回调函数之外。这似乎消除了我的错误。我会在这里做更多的测试,看看结果。谢谢!!现在我认为这已经解决了我的问题。希望它有!谢谢你的引导:)
    createNewUser () {
    
        // Create a new user with email and password.
    
        var email = this.newUserEmail;
        var password = this.newUserPassword; 
    
        firebaseAuth.createUserWithEmailAndPassword(email, password).catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;
            // ...
        }).then(() => {
    
          firebaseAuth.onAuthStateChanged(user => {
             database.ref('/users/' + user.uid).set({
                 name: this.newUserName,
                 email: this.newUserEmail,
                 isRetailer: false,
                 isAdmin: false
             }).then(()=>{
                // Push to home after user data has been saved
                router.push({ path: '/' });
            });
          });  
        });
        }
      }
    }