Firebase实时数据库更新特定值进入无限循环

时间:2018-10-09 19:17:11

标签: firebase firebase-realtime-database

我的代码如下

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语句将其置于无限循环中。

1 个答案:

答案 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"}, {})
})

每当将新文档添加到集合中时,就会触发此功能。您可以类似地添加侦听更新的功能。 希望这会有所帮助。