从扑扑的火力中获取日期并将其存储在var中

时间:2018-09-19 19:17:54

标签: firebase firebase-realtime-database flutter

是否可以从firebase中获取数据并将其存储为字符串,例如在flutter中?

我希望我的应用程序具有基于角色的用户,每个用户都有一个角色和一个页面。 firebase身份验证仅包含用户名和密码。在我的数据库中,我有“用户”集合,UID用作文档的ID,我想查询文档并获取角色值并将其存储为字符串形式的变量。 http://prntscr.com/kwcylt

 Container(
              height: 50.0,
              child: Material(
                borderRadius: BorderRadius.circular(20.0),
                shadowColor: Colors.greenAccent,
                color: Colors.green,
                elevation: 7.0,
                child: GestureDetector(
                  onTap: () {
                    FirebaseAuth.instance
                        .signInWithEmailAndPassword(
                          email: email,
                          password: password)
                        .then((FirebaseUser user) {
                         var userRole = Firestore.instance.collection('Users').document(user.uid).toString();

                         if(userRole['Role'].toString().compareTo("Admin"))
                            Navigator.of(context).pushReplacementNamed('/AdminTabs');
                          else Navigator.of(context).pushReplacementNamed('/UserTabs');      
                    })
                        .catchError((e) {
                          print(e);
                    });
                  },

我希望userRole包含Firebase中的数据

1 个答案:

答案 0 :(得分:1)

像这样更新代码,它将起作用:您基本上是在运行“检查文档引用”而不是“文档快照”。

.then((FirebaseUser user) {
    Firestore.instance.collection('Users')
                .document('user.uid').get().then((userRole){
              if(userRole['Role'].toString().contains("Admin")){
                 Navigator.of(context).pushReplacementNamed('/AdminTabs');
              }
    else {Navigator.of(context).pushReplacementNamed('/UserTabs');}
            });

                    })
                        .catchError((e) {
                          print(e);
                    });
                  },