Javascript Firebase检查两个不同的数据库引用,尽管进行了if检查

Javascript Firebase检查两个不同的数据库引用,尽管进行了if检查,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我试图为帐户中不同类型的用户区分两种不同的登录。其中一个用户是能够通过应用程序进行搜索的普通消费者。另一个是业务仪表板,企业可以在其中查看用户在其业务中检查了哪些内容 问题是,当我检查两个不同的数据库引用时,它似乎会同时检查这两个引用,而不是验证第一个检查,并继续执行拉取操作,错误地说我的一个节点为null 它明显失败的情况是第一次if检查,但在我的数据库中,节点用户类型设置正确: 问题似乎是它在两个数据库引用中查找的uid的位置发生了更改。当我尝试使用业务帐户登录时,它会成功地输入该语句并重定

我试图为帐户中不同类型的用户区分两种不同的登录。其中一个用户是能够通过应用程序进行搜索的普通消费者。另一个是业务仪表板,企业可以在其中查看用户在其业务中检查了哪些内容

问题是,当我检查两个不同的数据库引用时,它似乎会同时检查这两个引用,而不是验证第一个检查,并继续执行拉取操作,错误地说我的一个节点为null

它明显失败的情况是第一次if检查,但在我的数据库中,节点用户类型设置正确:

问题似乎是它在两个数据库引用中查找的uid的位置发生了更改。当我尝试使用业务帐户登录时,它会成功地输入该语句并重定向,当我使用消费者帐户登录时,它会尝试检查业务引用,如果然后拉出错误
userType为null无法读取

firebase.auth().onAuthStateChanged(函数(用户){
如果(用户){
//这将提示用户允许位置访问
//登录后,它将允许我们显示
//向用户提供附近的业务
var uid=user.uid
if(window.navigator.geolocation){
window.navigator.geolocation.getCurrentPosition(函数(位置){
})
}
var uid=user.uid
控制台日志(uid)
business.child(uid).on(“value”,snap=>{
if(snap.val().userType==“业务”){
警报(“这不是消费者帐户!”)
firebase.auth().signOut()
window.location.href=“businesslogin.html”
}否则{
consumer.child(uid).on(“value”,snap=>{
if(snap.val().userType==“消费者”){
if(snap.val().isPhoneVerified==true){
window.location.href='nearbybusinesss.html'
}否则{
window.location.href='loginVerification.html'
}
if(snap.val().isUserCheckedin==true){
window.location.href=“leave.html”+“#”+snap.val().checkedBusinessID
}否则{
window.location.href=“nearbybusinesss.html”
}
} 
})
}
}) 
}
})

如果(snap.val()=“business”)
错误在这一行中。如果(snap.val()。至少这是我能马上看到的。试一试,看看它是否解决了您的问题

您能否准确地描述一下当您单步执行此代码时会发生什么情况(在任何回调的第一行上设置断点?在这种情况下,哪一行没有执行您希望它执行的操作?
if(snap.val().userType==“business”)
那一行总是引出一个错误,说
未捕获类型错误:无法读取null的属性“userType”
我最后用更多信息编辑了我的问题,遗憾的是这并没有解决问题。我仍然收到错误
未捕获类型错误:无法读取null的属性“userType”
哦,我忘了。如果(snap.val()&&snap.val().userType==“business”)
。在尝试访问
userType
之前,这将检查快照是否确实包含数据。谢谢,它工作了,我不敢相信我没有看到