【问题标题】:Bad state: field does not exist within the DocumentSnapshotPlatform. How to handle such errors?错误状态:DocumentSnapshotPlatform 中不存在字段。如何处理此类错误?
【发布时间】:2021-10-27 09:56:44
【问题描述】:

我怀疑如何处理字段不存在的情况,例如假设我已经发布了我的应用程序,并且在未来的更新中我在文档中添加了一个新字段,那么如果字段不存在,我该如何处理。

例如,在共享首选项中,我们使用??来处理具有指定键值的数据存在。

int val=prefs.getInt("myKey")??0;

如您所见,如果没有与 key-myKey 关联的值,上述代码会将 val 的值设置为 0。同样,我想知道有没有办法为 firestore 文档字段做这件事。

我的代码:-

class UserModel
{
  final String? id;
  final String? username;
  final String? email;

  UserModel({
    this.id,
    this.username,
    this.email,
  });

  factory UserModel.fromDocument(DocumentSnapshot doc)
  {
    return UserModel(
      id: doc['id'],
      username: doc['username'],//suppose the username does not exist in the field then how can i assign the value "User" to the username?
      email: doc['email'],
    );
  }
}

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    这是开发使用 Firebase 的应用时的问题。如果在已有数据之后添加字段,并且尝试在 dart 中获取新字段,则会收到此错误。我认为唯一的解决方案是删除所有没有新字段的旧数据。或者把这个新字段放到你所有的旧数据中。这有点烦人。因此,请确保您必须在开头添加所有可能的字段。

    不幸的是,你不能像 int val=prefs.getInt("myKey")??0; 这样使用,因为它甚至不是 null。

    【讨论】:

    • 我知道在开始时拥有所有字段是一个很好的做法,但我们不知道未来的更新。所以,只是想知道一种处理此类事情的方法。
    猜你喜欢
    • 2021-09-28
    • 2021-09-27
    • 2021-05-16
    • 2021-03-20
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多