【问题标题】:Batch create/remove with Firebase Real time db使用 Firebase 实时数据库批量创建/删除
【发布时间】:2021-10-20 10:45:48
【问题描述】:

我像这样使用 Firebase 实时数据库:

 createSoldLead(soldLead: SoldLeadModel): void {
    const soldLeadsReference = this.angularFireDatabase.list<SoldLeadModel>(
      `groups/${this.groupId}/soldLeads`
    );

    const leadsReference = this.angularFireDatabase
        .list<SoldLeadModel>(
      `groups/${this.groupId}/leads`
    );

    soldLeadsReference.set(soldLead.id.toString(),soldLead);

    leadsReference.remove(soldLead.id.toString());
  }

这工作正常。但是我怎样才能做到这一点作为批量创建/删除呢?即确保他们都成功

我看到了this blog。但不知道如何在我的用例中应用它?

【问题讨论】:

  • 你想阻止 2 次写入还是要确保它们都成功(即有某种事务)?
  • @MikeOne 我需要这个make sure they both succeedtransaction 在这里不起作用。在 Firebase 上有所不同:firebase.google.com/docs/database/web/…
  • 是的,因此是“某种”????。除非您更改数据模型,否则这不容易解决..
  • @MikeOne 无需更改数据模型。请看答案。

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


【解决方案1】:

您可以使用单个多路径更新在不同路径写入多个节点。

相当于你的两个电话将是这样的:

let updates = {};
updates[`groups/${this.groupId}/soldLeads/${soldLead.id}`] = soldLead;
updates[`groups/${this.groupId}/leads/${soldLead.id}`] = null;

firebase.database().ref().update(updates);

将节点值设置为 null 会删除该节点。

【讨论】:

  • 对不起,我不清楚。即你在哪里使用这个updates 来讲述对firebase 的更改?还有如何用 Angularfire 而不是这条线来做到这一点? firebase.database().ref().update(soldLead.id.toString());
  • 糟糕,我将错误的对象传递给数据库。那应该是firebase.database().ref().update(updates); 我现在也在答案中修复了它。我不完全了解 AngularFire 语法,这就是我展示底层 SDK 调用的原因,但这看起来很有希望:github.com/angular/angularfire/issues/435
  • 太棒了。这是一件了不起的事情。非常感谢。
【解决方案2】:

在这里你可以看到AngularFire 版本。

createSoldLead(soldLead: SoldLeadModel): void {
    const updates = {};

    updates[`groups/${this.groupId}/soldLeads/${soldLead.id.toString()}`] = {
      ...soldLead,
      createdBy: this.createdBy,
      createdDate: this.createdDate,
    };

    updates[`groups/${this.groupId}/leads/${soldLead.id.toString()}`] = null;

    this.angularFireDatabase.object('/').update(updates);
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2020-01-17
    相关资源
    最近更新 更多