我正在尝试使用 Angular 和 AngularFire 更新 Firebase 实时数据库上的数据, 数据发生变化,但几秒钟后它又回到原始数据,这是我正在使用的功能。
onSaveDateUpdate(){
let temp = {
period:{
startDate:'',
endDate:'',
periodType:''
},
updatedTime:("0" +(this.r.getMonth()+1)).slice(-2)+"/"+("0" +this.r.getDate()).slice(-2)+"/"+this.r.getFullYear()+" "+this.r.getHours()+":"+this.r.getMinutes()+":"+this.r.getSeconds()
};
var save =this.onEndDateValidator();
if(save){
temp.period.startDate = this.datePipe.transform(this.editStartDate,'MM/dd/yyyy');
temp.period.endDate = this.datePipe.transform(this.editEndDate,'MM/dd/yyyy');
temp.period.periodType = this.periodType;
const itemRef = this.db.object(URL );
this.showDateEdit = !this.showDateEdit;
itemRef.update(temp).then(() => {
...
});
}
最佳答案
此行为通常意味着您的安全规则拒绝写入操作。
当您在应用中执行写入操作时,Firebase 客户端最初会假设写入会成功,并立即触发本地事件。这就是使用 Firebase 时 UI 更新如此之快的原因之一。
在服务器上,数据库根据您的安全规则检查写入操作。如果用户被授权,则允许写入,否则拒绝写入。在这两种情况下,服务器都会将结果通知给客户端。在写入被拒绝的情况下,客户端会确保本地状态得到更新以反射(reflect)服务器状态。本地状态的恢复听起来就像您所看到的那样,如果是由于客户端-服务器距离/延迟造成的延迟是有意义的。
关于javascript - Firebase 更新数据,但几秒钟后将其更改回原始值 "angularFire",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327354/