【问题标题】:Why do we need to convert to dart object when getting data from Firebase?为什么我们在从 Firebase 获取数据时需要转换为 dart 对象?
【发布时间】:2021-08-13 13:57:59
【问题描述】:

我是编程新手,这很简单,但我有点困惑。

                                email: _emailController.text.trim(),
                                password: _passController.text.trim(),
                              );
                              await _firestore
                                  .collection("users")
                                  .doc("${user.user?.uid}")
                                  .set({
                                "username": _usernameController.text.trim(),
                                "email": _emailController.text.trim()
                              });

所以在这段代码中,我将用户名和电子邮件发送到 firebase firestore,如果还没有一个 presenet 并且使用地图用户名:用户名和电子邮件,它将创建集合“用户”和文档“uid”:电子邮件,所以这是应该的。但是在这里我没有创建一个模型类来将数据发送到firestore但是在获取数据的情况下。

    _firestore
        .collection('users')
        .doc(_auth.currentUser?.uid)
        .get()
        .then((DocumentSnapshot documentSnapshot) {
      if (documentSnapshot.exists) {
        user = documentSnapshot.data();
      } else {
        print("Data doesn't exist");
      }
      notifyListeners();
    });
  }
}

为什么我必须转换 documentSnapshot.data();进入创建模型类的飞镖对象? 这真的很简单,但我无法正确理解,希望有人能帮我一下吗? 谢谢。

【问题讨论】:

  • 我个人认为你的问题可能比 Flutter 更进一步。我们对数据进行建模是因为我们发现对数据进行设计很重要。此类最佳实践具有多种重要含义,无法在此评论中一一列举。

标签: firebase flutter google-cloud-firestore


【解决方案1】:

最好的解释大概在cloud_firestore 2.x migration guide

如图所示,您不必创建模型类,但您必须指出 DocumentSnapshot 中的数据类型。如果你没有模型类,你可以使用Map<String, dynamic>

【讨论】:

  • 谢谢! .get()((DocumentSnapshot<Map<String, dynamic>> documentSnapshot) { if (documentSnapshot.exists) { user = documentSnapshot.data();
【解决方案2】:

创建模型类的目的是让事情变得更简单,让事情变得井井有条。创建它不是强制性的,但它使使用该响应和使用它变得更加容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多