【问题标题】:Firebase update data , but change it back to original after few seconds "angularFire"Firebase 更新数据,但几秒钟后将其更改回原始“angularFire”
【发布时间】:2019-12-13 17:34:35
【问题描述】:

我正在尝试使用 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(() => {
        ... 
      });
    }

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database angularfire


    【解决方案1】:

    这种行为通常意味着您有拒绝写入操作的安全规则。

    当您在应用中执行写入操作时,Firebase 客户端最初会假定写入会成功,并立即触发本地事件。这就是您使用 Firebase 时 UI 更新速度如此之快的原因之一。

    在服务器上,数据库会根据您的安全规则检查写入操作。如果用户被授权,则允许写入,否则拒绝。在任何一种情况下,服务器都会将结果通知客户端。在写入被拒绝的情况下,客户端会确保更新本地状态以反映服务器状态。本地状态的恢复听起来就像您所看到的那样,如果这是由于客户端-服务器距离/延迟造成的,那么延迟是有意义的。

    【讨论】:

    • 感谢您的回复,但问题仅出现在更新时,当我创建新数据时它运行良好,并且在创建和更新时应用相同的规则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多