我的代码如下
updateUserCount(){
console.log("started user update")
this.db.object('/analytics').valueChanges().map(
(snapshot) => {return snapshot}
).subscribe(
(res:any) => {
console.log("Vik:::total users in the system are:" + res.userCount)
this.db.object('/analytics').update({"userCount": Number(res.userCount) + 1}).then(
(r) => console.log("count updated")
).catch(
err => console.log("error updating count:" + err)
)
})
}
它只是试图将一个添加到属性userCount中。但是update语句将其置于无限循环中。
答案 0 :(得分:1)
从上面的代码中可以理解的是,每次更新集合时,您都希望更新“ userCount”。 虽然我不知道确切的解决方案,但是我可以建议一种替代方法。
1)添加一个云函数(flexbox),该函数每次将值添加到集合时都会触发。
2)代码在TypeScript中看起来像这样
import * as functions from 'firebase-functions';
import { DocumentSnapshot } from '../node_modules/firebase-functions/lib/providers/firestore';
export const valueAddFunction = functions.firestore.document('/analytics/{id}')
.onCreate((snap: DocumentSnapshot, context: any) => {
const original = snap.data().original
console.log("original " + original)
return snap.ref.set({key: "WhateverValueYouWant"}, {})
})
每当将新文档添加到集合中时,就会触发此功能。您可以类似地添加侦听更新的功能。 希望这会有所帮助。