Firebase-未捕获(在promise中)TypeError:无法读取属性
Firebase - Uncaught (in promise) TypeError: Cannot read property
我有两个文本框,一个用于用户名,另一个用于密码。
<input type="text" id="username">
<input type="text" id="password">
<input type="button" value="Login" onclick="authenticateUser()">
这是防火基地代码:
function authenticateUser() {
var username = document.getElementById('username').value;
var password = document.getElementById('password').value;
database.ref('users/'+username).once('value').then(function(snapshot) {
var email = snapshot.val().email;
console.log(email);
});
}
上面写着:
未捕获(承诺中)类型错误:无法读取空的属性"email"
上面的firebase代码可以工作,如果用户名匹配就会获取电子邮件,但如果用户名不存在怎么办?如果不存在,就会抛出TypeError,如何捕捉该错误?
不幸的是,这不起作用:
function authenticateUser() {
var username = document.getElementById('username').value;
var password = document.getElementById('password').value;
database.ref('users/'+username).once('value').then(function(snapshot) {
var email = snapshot.val().email;
console.log(email);
}, function(error) {
console.log('Invalid Username');
});
}
在电子邮件和密码验证的情况下,有catch
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
在Java中,有类似的东西
catch(TypeError error) {
//Do whatever you want to do
}
try {
snapshot.val().email
} catch(e) {
if (e instanceof TypeError) {
....
}
}
更多https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
但你似乎也可以通过空检查(这通常比触发可避免的异常更适合"流量控制")
var user = snapshot.val();
if (user == null) { /* error */}
相关文章:
- TypeError:无法读取属性'推'未定义的JavaScript
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- 角度推入数组给出:TypeError:无法读取属性'推'的未定义
- http/rxjs catch回调中的Angular 2重定向导致TypeError:无法读取属性'订阅'
- TypeError:无法读取属性'findAll'的未定义
- Angular2-TypeError:无法读取属性'Id'(Typescript)中未定义的
- TypeError:无法读取属性'会话'的未定义
- Steam bot错误-TypeError:无法读取属性'0'的未定义
- casperjs未捕获错误:TypeError:试图分配给readOnly属性
- TypeError:无法读取属性'indexOf'的未定义
- emscripten+sdl=引发异常:TypeError:无法设置属性'widthNative'的未定
- Slick jQuery: TypeError 无法读取 undefined 的属性 'unslick'
- Typescript和Browserify-未捕获的TypeError:无法读取属性'步骤'的未定义
- Sailsjs:TypeError:无法读取属性'name'的未定义
- TypeError:无法读取属性'url'的未定义
- 提供“角服务”;TypeError:无法读取属性'helloConsole'“未定义”;
- Quicksort.js未捕获的typeError无法读取null的属性
- IE8 TypeError对象没有'不支持方法的此属性
- TypeError: 属性 Array.prototype.splice.call(..) 是不可配置的,无法删除