Ern*_*Kev 5 javascript firebase typescript firebase-realtime-database
如果我想保存到 firebase 的数据无效,我有以下代码会在控制台中向我抛出一些 firebase 异常。我想捕获它并以受控方式将其显示在屏幕上,而不是从控制台中查找。我不知道为什么我的 .catch 没有捕获任何 firebase 异常?
this.databaseService.saveCodesToFirebase(jsonFromCsv)
.then(result => {
this.alertService.alertPopup('Success', 'Code Updated')
})
.catch(error => {
this.errorMessage = 'Error - ' + error.message
})
saveCodesToFirebase(myObj: Object) {
let ref = firebase.database().ref();
let path = this.userService.getCurrentUser().companyId + '/codes/'
let lastUpdatedPath = this.userService.getCurrentUser().companyId + '/lastUpdated/';
var updates = {}
updates[path] = jobObject;
updates[lastUpdatedPath] = Math.round(new Date().getTime() / 1000);
return ref.child('codes').update(updates);
}
Run Code Online (Sandbox Code Playgroud)
例外:Firebase.update 失败:第一个参数在属性“codes.apple20170318.codes”中包含无效的键 ()。键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”
这里没什么可说的,但我最好的猜测是,您传递给的对象的saveCodesToFirebase()键中包含点,就像错误消息中显示的那样:jobCodes.apple20170318.codes。
如果您想保留此模型,则必须在执行操作之前清理该对象以替换其键(及其子键,递归地)中的任何无效字符update()。
当涉及到捕获异常时,您必须使用 try/catch 块。在这种情况下,附加.catch()到 Promise 只对检测服务器返回的错误有用,但这里是方法update()本身同步抛出异常。
一种可能的方法是这样的:
try {
this.databaseService.saveCodesToFirebase(jsonFromCsv)
.then(result => {
this.alertService.alertPopup('Success', 'Code Updated')
})
.catch(error => {
this.errorMessage = 'Error - ' + error.message
})
} catch (error) {
this.errorMessage = 'Error - ' + error.message
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12984 次 |
| 最近记录: |