5

For some time now, I have noticed that the fields of some of my firebase documents get deleted, even though I do not delete them or write any logic on my app to delete fields of a document or a document itself. This is a picture that shows a document on my firebase project, which has its fields deleted on its own.

The firebase project is connected to my flutter app, but I have not written any delete functionality. I only update the fields occasionally with recent data. Please, who has any idea of what's happening?

Edit

This is how I update the documents of my user collections

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;
}

This is how i create the user document in the users collection.

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;
}

I have a User model that defines the user object.

Justine
  • 53
  • 4

1 Answers1

1

If you want to set some fields of a document, but keep existing fields, use set with SetOptions(merge: true):

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

Without this, the existing fields that are not listed in set will be not be kept, probably this happened to you.

Peter Koltai
  • 8,296
  • 2
  • 10
  • 20