我已经实现了这个功能来更新firebase上的用户,问题是它从不调用“then”函数......关于这个问题的任何建议?
用户在数据库中已正确更新,如果我尝试直接在函数上实现“then”分支,则会被触发。
编辑():
// Proseguo con aggiornamento
this.statoUtente.updateCurrentUser(uteIn).then(() => {
<<<<<<<<<<<<<<<<<<<<< program never call this >>>>>>>>>>>>>>>>>
console.log('Risposta da Promise') ;
// Dopo l'aggiornamento chiedo di completare le informazioni mancanti
this.nomeTemplate = 'updateUserForm' ;
this.helperset = 2 ;
this.wait = false ;
this.error = '' ;
})
updateCurrentUser(UteIn : TipoSingoloUtente) : Promise<any> {
let Promessa = new Promise<any>(observer => {
let IDUtente = this.afAuth.auth.currentUser.uid ;
console.log(IDUtente) ;
if ((IDUtente) && ( IDUtente.trim() != '' )) {
UteIn.ID = IDUtente ;
observer(this.db.object('users/' + IDUtente).set(UteIn))
} else {
console.log('null null null') ;
Promise.resolve(false) ;
}
}) ;
return Promessa ;
}
答案 0 :(得分:2)
你只需要
updateCurrentUser(UteIn: TipoSingoloUtente) {
const IDUtente = this.afAuth.auth.currentUser.uid;
if (IDUtente && IDUtente.trim() != '') {
UteIn.ID = IDUtente;
return this.db.object('users/' + IDUtente).set(UteIn);
} else {
console.log('null null null');
return Promise.resolve(false);
}
}
您不需要将其包装在Promise
构造函数中。 this.db.object...
返回Promise
,Promise.resolve(...)
返回Promise
,以便您恢复正常。
答案 1 :(得分:0)
您应该删除您手动创建的承诺。没有必要。您只能使用此返回的承诺:
this.db.object('users/' + IDUtente).set(UteIn)
当该承诺解决后,您可以确定数据库已更新。