firebase - 我想在我的Flutter应用程序中从Firebase数据库中获取当前用户数据

标签 firebase flutter firebase-realtime-database dart firebase-authentication

我的问题是我只想获取当前用户的数据。但是下面的这段代码正在获取数据库中存在的所有用户的数据。我如何才能获取当前唯一用户的数据。

  • 这是我从firebase提取数据的代码(我正在使用Realtime DataBase)。
    “节点名”中的字段是存储我的数据的字段。
  • class ShowDataPage extends StatefulWidget {
      @override
      _ShowDataPageState createState() => _ShowDataPageState();
    }
    
    class _ShowDataPageState extends State<ShowDataPage> {
      List<myData> allData = [];
    
      @override
      void initState() {
        DatabaseReference ref = FirebaseDatabase.instance.reference();
        ref.child('node-name').once().then((DataSnapshot snap) {
          var keys = snap.value.keys;
          var data = snap.value;
          allData.clear();
          for (var key in keys) {
            myData d = new myData(
              data[key]['name'],
              data[key]['message'],
              data[key]['profession'],
            );
            allData.add(d);
          }
          setState(() {
            print('Length : ${allData.length}');
          });
        });
      }
    
  • 这是我将数据以“node-name”名称上传到Firebase的代码。此代码存储在另一个文件中,并且还有另一个必填字段,但这是将我的数据上传到Firebase的字段。
  • _sendToServer() {
        if (_key.currentState.validate()) {
          _key.currentState.save();
          DatabaseReference ref = FirebaseDatabase.instance.reference();
          var data = {
            "name": name,
            "profession": profession,
            "message": message,
          };
          ref.child('node-name').push().set(data).then((v) {
            _key.currentState.reset();
          });
        } else {
          setState(() {
            _autovalidate = true;
          });
        }
      }
    
  • 我在firebase中的数据库如下所示。

  • enter image description here

    最佳答案

    使用用户uid:

    ref.child('node-name').child("M5CCSXQo3Upq5OC7y3lw").once()
    .then((DataSnapshot snap) {...}
    

    如果您不知道且未使用过uid,请使用前面的示例执行查询。
    @override
    void initState() {
        FirebaseAuth.instance.currentUser().then((user){
          fetchUser(user);
        });
    }
    
    fetchUser(FirebaseUser user)
    {
      DatabaseReference ref = FirebaseDatabase.instance.reference();
      ref.child('node-name').child(user.uid).once().then((DataSnapshot snap) {
          var keys = snap.value.keys;
          var data = snap.value;
          allData.clear();
          for (var key in keys) {
            myData d = new myData(
              data[key]['name'],
              data[key]['message'],
              data[key]['profession'],
            );
            allData.add(d);
          }
          setState(() {
            print('Length : ${allData.length}');
          });
        });
    }
    

    关于firebase - 我想在我的Flutter应用程序中从Firebase数据库中获取当前用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61296528/

    相关文章:

    flutter - 将快照数据传递给类时出错

    firebase - 我们如何将 Firebase 托管与 Firebase 实时数据库/存储集成?

    android - 如何将 firebase 与读写规则一起使用为 false

    Firebase动态链接-根网址

    ios - 将 cocoapods (Firebase) 应用于扩展

    typescript - “查询”在类型 'QueryFn' 中不存在 | angularfire2

    java - 从 Firebase 数据库检索所有数据

    flutter - 有没有办法向 map 的 Mapbox 添加自定义图标?

    flutter - 如何防止多次点击一个手势?

    android - 用户没有定义无参数构造函数