Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
颤振+;Firebase-检查用户是否存在_Firebase_Flutter_Firebase Realtime Database - Fatal编程技术网

颤振+;Firebase-检查用户是否存在

颤振+;Firebase-检查用户是否存在,firebase,flutter,firebase-realtime-database,Firebase,Flutter,Firebase Realtime Database,我正在尝试从数据库(Firebase实时数据库)中删除不在或已断开连接的用户。我进行了搜索,我能找到的唯一与此相关的资源是: 该链接是一个web解决方案,我尝试采用该概念,试图使其发挥作用: @override void initState() { super.initState(); checkConnection(); } checkConnection() { databaseReference.child('.info/connected').

我正在尝试从数据库(Firebase实时数据库)中删除不在或已断开连接的用户。我进行了搜索,我能找到的唯一与此相关的资源是:

该链接是一个web解决方案,我尝试采用该概念,试图使其发挥作用:

  @override
  void initState() {
    super.initState();
    checkConnection();
  }

  checkConnection() {
    databaseReference.child('.info/connected').onValue.listen((data) {
      if (data.snapshot.value == false) {
        return;
      }
      databaseReference
        .child('games')
        .child(inviteCode)
        .child("players")
        .child(playerID)
        .onDisconnect()
        .remove();
    });
  }
上面的代码似乎不起作用。我试过在iOS模拟器上测试它

我没有使用Firebase验证器。我只是将用户直接添加到实时数据库中,结构如下:

games { inviteCodehere: { players: {-M_AUmwDhQBzFdPL1lsE: {name: saad, score: 0 } } } }

如果有人能指导我,我将不胜感激。有没有一种方法可以定义用户离开多长时间的触发器?如果不是,默认值是多少。谢谢

如何测试它是否正常工作

触发它可能需要一些时间。因为你也会搜索一些东西来指示用户离开的时间,也许会对你有所帮助

您可以将
onDisconnect
事件和定期
处于活动状态
时间戳组合在一起,每次用户在应用程序中执行某项操作时,您都会将该时间戳保存到数据库中

Flitter的RealtimeDatabase SDK仍处于测试阶段,因此我建议使用
处于活动状态的
解决方案,如果有人在特定时间内离开,您需要删除一些数据。创建一个云函数,查询早于特定时间的时间戳,并删除与之相关的数据