Javascript Firebase捕获异常

Javascript Firebase捕获异常,javascript,typescript,firebase,firebase-realtime-database,Javascript,Typescript,Firebase,Firebase Realtime Database,如果要保存到firebase的数据无效,则以下代码会在控制台中引发一些firebase异常。 我想捕捉它并以可控的方式将其显示在屏幕上,而不是从控制台中查找。 我不知道为什么我的.catch没有捕获任何firebase异常 this.databaseService.saveCodesToFirebase(jsonFromCsv) .then(result => { this.alertService.alertPopup('Success', 'Code Updated')

如果要保存到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);
}
异常:Firebase.update失败:第一个参数在属性“codes.apple20170318.codes”中包含无效键()。钥匙必须是 非空字符串,不能包含“.”、“$”、“/”、“[”或“]”


这里没有太多内容,但我最好的猜测是,您传递给
savecodestoferbase()
的对象中有包含点的键,如错误消息中所示:
jobCodes.apple20170318.codes

如果要保留此模型,在执行
update()
操作之前,必须清理该对象以替换其键(及其子键,递归)中的任何无效字符

在捕获异常时,必须使用try/catch块。在本例中,promise附带的
.catch()
仅用于检测服务器返回的错误,但这里是同步引发异常的
update()
方法本身

一种可能的方法如下:

试试看{
this.databaseService.saveCodesToFirebase(jsonFromCsv)
。然后(结果=>{
此.alertService.alertPopup('Success','Code Updated')
})
.catch(错误=>{
this.errorMessage='Error-'+Error.message
})
}捕获(错误){
this.errorMessage='Error-'+Error.message
}

实时数据库中提供有关数据模型的更多详细信息。@ErnieKev我也面临同样的问题。你知道怎么克服吗?我甚至添加了外部全局try-catch,但它仍然在发生,因为我在回调中有一些“更新”调用。这是唯一一种到处都能捉到鱼的方法吗?那么firebase的“陷阱”有什么用呢?我知道这是一个很容易解决的问题。然而,我的目标是通过某种catch语句以某种方式捕获这个错误。