如何使用Flutter/Dart检查Firebase数据库中是否存在节点

4

我已经看到有多篇针对JavaScript和其他语言的类似问题的答案,通常都建议获取一个快照并使用名为exists()的方法进行检查。但在Dart/Flutter中,没有这样的方法。目前我的解决方法如下:

devicesRef.child(deviceId).once().then((DataSnapshot data) {
    print(data.key);
    print(data.value);        
});

我想检查一个名为 deviceId 的节点是否已经存在。

那么,我该如何使用Dart/Flutter检查Firebase实时数据库中是否存在一个节点呢?

4个回答

6
我猜,由于实时数据库中不存在空的子值,你可以简单地检查 data.value 是否为空。

3
将您的 DatabaseReference 传递给此方法,如果它存在,则返回true。
 Future<bool> rootFirebaseIsExists(DatabaseReference databaseReference) async{
    DataSnapshot snapshot = await databaseReference.once();

    return snapshot !=null;
  }

0

更新的答案:

static Future<bool> isNodeExists(DatabaseReference databaseReference) async {
var result = await databaseReference.once();
return result.snapshot.value != null;
}

0
Future<bool> isUserRegistered(String idToken) async{
 DataSnapshot dataSnapshot = await databaseReference.child('app').child('users').child(idToken).once();
 return dataSnapshot.value!=null;
}

请不要仅仅发布代码作为答案,同时提供一份解释,说明您的代码的作用以及如何解决问题。解释详细的答案通常更有帮助、更高质量,并且更容易获得赞同。 - Tyler2P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接