Firestore exclude data serialization

10,301

Solution 1

To mark a field as excluded from the Firestore or Realtime database you can use the @Exclude annotation. For example:

@IgnoreExtraProperties
public class Model {
    @Exclude private String id;

    // ...
}

You can also use the @IgnoreExtraProperties annotation against the class to automatically ignore properties that don't map to class fields.

Solution 2

For Kotlin you need to make sure that the getter is annotated with the @Exclude annotation and not just the appropriate field. You can do this by specifying the target of the annotation. For example:

data class Model(@get:Exclude val id: String)

@get specifies that the @Exclude annotation should be added to the value's getter. See Annotation Use-site Targets docs for more information.

This also works for data classes.

Credits to @mfulton26 for his answer https://stackoverflow.com/a/40117301/2739794.

Solution 3

Grimthorr's answer didn't work for me. So, I put @Exclude annotation before the getter method of the field I want to exclude from writing to Firestore db, and it worked:

@Exclude
public String getId() {
    return id;
}
Share:
10,301
Zhyano
Author by

Zhyano

Im a Student, but doing programming as a hobby <3 Lol :D

Updated on June 06, 2022

Comments

  • Zhyano
    Zhyano about 2 years

    I've got several properties that should not be transferred to Firestore, such as metadata ("id" or "parent"), and with Firebase Realtime database, there was the option to set them to protected and make a getter to make them accessible to the outside world but not serialize to Firebase.

    With Firestore the only option to prevent a property from serialization is to create a class with a private property and extend that. But this is not really useful as the property is not even accessible from inside the class.

    Can you help me find a solution to create class properties that don't serialize to Firestore? (Maybe annotations?)

    Any help is greatly appreciated!