firebase - Flutter Firebase更新不会停止更新节点?

标签 firebase firebase-realtime-database int operators flutter

我正在我的 firebase 节点中搜索一个 int 值并减少它。它成功减少并将正确的信息打印到我的日志一次。当我尝试用新的 int 更新节点时,它会重复,就好像它在循环中一样。我怎样才能让它更新一次?这是我的代码...

if (vidRank == 1) {
      await fb.child('UserVideo/${userid}/Vid1').onValue.listen((Event event){
        if (event.snapshot != null){
          var vid1id = event.snapshot.value['videoID'].toString();
          fb.child('NumberOnes/${vid1id}').onValue.listen((Event onesEvent){
            if (onesEvent.snapshot != null){
              var onesValue = (onesEvent.snapshot.value['Value'] as int);
              final vidValue = onesValue - 1;
              print("Inside  ${vidValue}");
              fb.child('NumberOnes/${vid1id}').update({
                'Value': vidValue
              });
            }
          });
        }
      });

最佳答案

如果您只需要一个 Action ,请使用 .once()

if (vidRank == 1) {
  var event = await fb.child('UserVideo/${userid}/Vid1').once();
  if (event.snapshot != null){
    var vid1id = event.snapshot.value['videoID'].toString();
    var onesEvent = await fb.child('NumberOnes/${vid1id}').once();
    if (onesEvent.snapshot != null){
      var onesValue = (onesEvent.snapshot.value['Value'] as int);
      final vidValue = onesValue - 1;
      print("Inside  ${vidValue}");
      fb.child('NumberOnes/${vid1id}').update({
        'Value': vidValue
      });
    }
  }
}

否则更新将导致 listen(...) 的另一个事件,并且您有一个完美的循环。

关于firebase - Flutter Firebase更新不会停止更新节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47459337/

相关文章:

firebase - Firebase中基于多个where子句的查询

ios - 如何管理 BOOL 变量?

firebase - 错误 : _elements. 包含(元素)不正确

javascript - firebase 未在 Angular 应用程序中定义(Firebase 迁移后)

android - 从 Firebase 检索数据以创建要在数据库中编辑的地址

python - 为什么 int 在 Python 中需要三倍的内存?

c - 段错误: 11 when running C program

reactjs - Firebase - 在发送到云 Firestore 时保存临时数据

java - if 和 else 中的 Toast 在 else 条件为 true 时执行。代码首先给出 "signup successful"然后给出 "user already exists"

swift - 使用 Firebase 获取属于子项的键值