Te damos la respuesta a esta cuestión, o por lo menos eso pensamos. Si continuas con preguntas dínoslo y con gusto te ayudaremos
Solución:
Hay dos formas en las que puedes lograr esto. La primera sería usar un Map
:
Map map = new HashMap<>();
map.put("yourProperty", "yourValue");
firebaseFirestore.collection("Users").document(user_id).update(map);
Como puedes ver, he usado update()
método en lugar de set()
método.
El segundo enfoque sería usar un objeto de su clase modelo como este:
YourModelClass yourModelClass = new YourModelClass();
yourModelClass.setProperty("yourValue");
firebaseFirestore.collection("Users").document(user_id)
.set(yourModelClass, SetOptions.mergeFields("yourProperty"));
Como puedes ver, he usado el set()
método pero lo he pasado como segundo argumento SetOptions.mergeFields("yourProperty")
lo que significa que hacemos una actualización solo en un campo específico.
Le sugiero que agregue un documento o colección más que podrá almacenar más valores de datos para un solo usuario.
Puede crear un documento de referencias para ambas actividades:
firebaseFirestore.collection("Users").document(user_id+"/acitivity1").set(data);
//and
firebaseFirestore.collection("Users").document(user_id+"/acitivity2").set(data);
O puede crear una subcolección para ello:
firebaseFirestore.collection("Users").document(user_id)
.collection("Activities").document("acitivity1").set(data);
//and
firebaseFirestore.collection("Users").document(user_id)
.collection("Activities").document("acitivity2").set(data);
Más sobre datos jerárquicos allí.
Si sabe que el documento de usuario ya existe en Firestore, entonces debe usar
firebaseFirestore.collection("Users").document(user_id).update(data)
Si no sabe si el documento existe, puede utilizar
firebaseFirestore.collection("Users").document(user_id).set(data, merge:true)
Esto realiza una fusión profunda de los datos.
Alternativamente, puede hacerlo usando subcolecciones.
Reseñas y valoraciones del tutorial
Recuerda que tienes la capacidad de valorar esta división si te fue de ayuda.