Firebase 文档字段正在被删除

Jus*_*ine 5 firebase firebase-realtime-database flutter google-cloud-firestore flutter-getx

一段时间以来,我注意到我的一些 Firebase 文档的字段被删除,即使我没有删除它们或在我的应用程序上编写任何逻辑来删除文档或文档本身的字段。这张图片显示了我的 firebase 项目中的一个文档,该文档的字段已自行删除。

firebase项目已连接到我的flutter应用程序,但我还没有编写任何删除功能。我只是偶尔用最新数据更新字段。请问谁知道发生了什么事?

编辑

这就是我更新用户集合文档的方式

Future<String?> submitUpdate(User user) async{
CollectionReference userCollection = firestore.collection('users');
String? uid = await secureStorage.read(key: 'uid');
try{
  
  //updates user doc in users collection
  await userCollection.doc(uid).update(user.toMap());
  return "Success";
}catch(e){
  return null;
}
Run Code Online (Sandbox Code Playgroud)

这就是我在用户集合中创建用户文档的方法。

Future<String?> saveUserCredentials(User user) async{
CollectionReference users = firestore.collection('users');
String? uid = await FlutterSecureStorage().read(key: "uid");

try{
  //creates a user doc in the users collection
  await users.doc(uid).set(
    user.toMap()
  );
  return "Success";
}catch (e){
  print(e);
  return null;
}
Run Code Online (Sandbox Code Playgroud)

我有一个定义用户对象的用户模型。

Pet*_*tai 1

如果要设置文档的某些字段,但保留现有字段,请使用setwith SetOptions(merge: true)

FirebaseFirestore.instance
  .collection(...)
  .doc(...)
  .set({'field1': value1, 'field2': value2}, SetOptions(merge: true));
Run Code Online (Sandbox Code Playgroud)

如果没有这个,未列出的现有字段set将不会被保留,可能这发生在你身上。