使用 AngularFire2 @angular/fire V5 在 Firebase 文档中增加一个值
Increment a value inside Firebase document using AngularFire2 @angular/fire V5
我在 Firebase 中有一个文档,其中包含一个我想要递增的值,但我在 Angularfire2 的文档中没有看到任何关于如何执行此操作的内容。
我尝试使用此答案 但失败了,因为我的 this.db 实例无法识别对象方法。
** 更新 **
通过执行以下操作,我能够在某种程度上让我的代码执行我想要的操作:
incrementChoice(choiceKey) {
this.db.doc(choiceKey).valueChanges().subscribe((choice:any) => {
this.db.doc(`choices/${choiceKey}`)
.update({
votes: ++choice.votes
});
})
}
但是,问题是我现在陷入了递增的无限循环,因为每次值递增时,订阅都会启动并再次递增。我不知道如何获得选择票值?有人可以帮我重构这个,这样我就可以使用它的键只获得一个选择对象,而在更新投票值时不受订阅的约束吗?
我知道可以通过获取整个集合来获取对象,但对于我的用例,我不想依赖整个集合来获取对象和该对象的投票值。我已经有了对象 Key。
试一试:
this.afs.doc(`choices/${choice.key}`)
.update({
votes: ++choice.votes
});
Here's a Working Sample StackBlitz for your ref.
能够让它与以下内容一起工作(感谢@SiddAjmera 帮助我走上正轨):
incrementChoice(choiceKey) {
const choiceDoc:any = this.db.collection('choices').doc(choiceKey);
choiceDoc.ref.get().then(choice => {
let votes = choice.data().votes
choiceDoc.update({
votes: ++votes
});
});
我在 Firebase 中有一个文档,其中包含一个我想要递增的值,但我在 Angularfire2 的文档中没有看到任何关于如何执行此操作的内容。
我尝试使用此答案
** 更新 **
通过执行以下操作,我能够在某种程度上让我的代码执行我想要的操作:
incrementChoice(choiceKey) {
this.db.doc(choiceKey).valueChanges().subscribe((choice:any) => {
this.db.doc(`choices/${choiceKey}`)
.update({
votes: ++choice.votes
});
})
}
但是,问题是我现在陷入了递增的无限循环,因为每次值递增时,订阅都会启动并再次递增。我不知道如何获得选择票值?有人可以帮我重构这个,这样我就可以使用它的键只获得一个选择对象,而在更新投票值时不受订阅的约束吗?
我知道可以通过获取整个集合来获取对象,但对于我的用例,我不想依赖整个集合来获取对象和该对象的投票值。我已经有了对象 Key。
试一试:
this.afs.doc(`choices/${choice.key}`)
.update({
votes: ++choice.votes
});
Here's a Working Sample StackBlitz for your ref.
能够让它与以下内容一起工作(感谢@SiddAjmera 帮助我走上正轨):
incrementChoice(choiceKey) {
const choiceDoc:any = this.db.collection('choices').doc(choiceKey);
choiceDoc.ref.get().then(choice => {
let votes = choice.data().votes
choiceDoc.update({
votes: ++votes
});
});