首页 > 解决方案 > 使用 AngularFire2 @angular/fire V5 在 Firebase 文档中增加一个值

问题描述

我在 Firebase 中有一个文档,其中包含我想要增加的值,但我在 Angularfire2 的文档中没有看到有关如何执行此操作的任何内容。

我尝试使用这个答案Create or increment a value with Angular2/AngularFire2但失败了,因为我的 this.db 实例无法识别对象方法。

** 更新 **

通过执行以下操作,我能够在某种程度上让我的代码做我想做的事情:

incrementChoice(choiceKey) {
    this.db.doc(choiceKey).valueChanges().subscribe((choice:any) => {
      this.db.doc(`choices/${choiceKey}`)
        .update({
          votes: ++choice.votes
        });
    })
  }

然而,问题是我现在陷入了一个无限的递增循环,因为每次值递增时,订阅都会启动并再次递增。我不知道如何获得选择投票值?有人可以帮我重构这个,以便我可以使用它的键获得一个选择对象,并且在我更新投票值时不受订阅的限制?

我知道可以通过获取整个集合来获取对象,但对于我的用例,我不想依赖整个集合来从该对象获取对象和投票值。我已经有了对象键。

标签: angularfirebaseangularfire2

解决方案


试试这个:

this.afs.doc(`choices/${choice.key}`)
  .update({
    votes: ++choice.votes
  });

这是您参考的工作示例 StackBlitz


推荐阅读