Javascript Firebase捕获异常
如果要保存到firebase的数据无效,则以下代码会在控制台中引发一些firebase异常。 我想捕捉它并以可控的方式将其显示在屏幕上,而不是从控制台中查找。 我不知道为什么我的.catch没有捕获任何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')
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语句以某种方式捕获这个错误。