angular - 使用 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
});
})
}
然而,问题是我现在陷入了一个无限的递增循环,因为每次值递增时,订阅都会启动并再次递增。我不知道如何获得选择投票值?有人可以帮我重构这个,以便我可以使用它的键获得一个选择对象,并且在我更新投票值时不受订阅的限制?
我知道可以通过获取整个集合来获取对象,但对于我的用例,我不想依赖整个集合来从该对象获取对象和投票值。我已经有了对象键。
解决方案
试试这个:
this.afs.doc(`choices/${choice.key}`)
.update({
votes: ++choice.votes
});
这是您参考的工作示例 StackBlitz。
推荐阅读
- typescript - TypeScript 中带有省略类型的函数链接
- speech-to-text - 将 Mp4 或视频文件上传到 Google Speech to Text API 的新“视频”模型
- google-sheets - 表格数组文字的公式解析错误
- java - 如何在 observable 中使用 arraylist?
- python - 如何访问在单行“for”循环中创建的列表?(列表的“自我”替代品)
- javascript - 将 HTML 元素而不是 HTML 文本字符串附加到 DOM
- c++ - 您如何显式实例化可变参数模板函数?C++
- twitter-bootstrap - 如何通过asp.net mvc中的按钮向控制器发送ID
- c# - Application Insights 自动安装破坏了 .NET 网站的部分内容
- javascript - Javascript中两个对象数组的Lodash过滤/交集