Firestore actualiza solo un campo

3 minutos de lectura

avatar de usuario
délfico

tengo una base de datos La secuencia es: colecciones – documento – hashmaps. Por ejemplo:

usuarios – el nombre de la colección

users.uid – el nombre del documento

Hashmap el documento consta de una gran cantidad de datos de usuario de hashmaps Hashmap Hashmap, etc.

Hashmap: el nombre del usuario es la clave y el teléfono, la ubicación, etc. son los valores. Necesito actualizar solo un campo (ubicación) para un nombre de usuario, pero no entiendo cómo hacerlo.

Intenté de la siguiente manera (actualizar el número de teléfono de alex):

User user = new User();
user.setPhone(131902331);

Map<String,RealmObject> userMap = new HashMap<>();
userMap.put("alex",user);

          mFirebaseFirestore
                  .collection("users")
                  .document(mFirebaseAuth.getUid())
                  .set(userMap, SetOptions.merge())
                  .addOnSuccessListener(new OnSuccessListener<Void>() {
                      @Override
                      public void onSuccess(Void aVoid) {
                          LOG.info("Success");
                      }
                  })
                  .addOnFailureListener(new OnFailureListener() {
                      @Override
                      public void onFailure(@NonNull Exception e) {
                          LOG.error("Failure "+e.toString());
                      }
                  });

¿Que estoy haciendo mal?

  • ¿Le importaría mostrar la estructura de los Documentos de usuario, es decir, qué campos y qué claves tienen?

    – Nicolás Pesa

    12 dic 2017 a las 23:39

  • Tal vez me equivoque, pero ¿no se supone que debe ser así: db.collection(“users”).document(“frank”).update({ “age”: 13, “favorites.color”: “Red” });

    – mono68

    8 de julio de 2019 a las 15:33


  • perdone esta pregunta estúpida, pero ¿hay alguna manera de usar esa sintaxis de mapas en Java ahora? ¿O es solo una abreviatura de la respuesta?

    – Andrés

    3 oct 2020 a las 23:42

  • Tendrás que crear un mapa con datos para actualizar en tu documento

    – Apoorv Pandey

    7 de abril de 2021 a las 9:06

  • perdone esta respuesta tardía @Andrew: es una sintaxis especial que maneja Firebase. Tenga en cuenta que si el mapa de favoritos aún no existe, eso produciría un campo con la clave literal “favoritos.color”, de lo contrario, entrará en el mapa existente como se esperaba y deseaba.

    – straya

    15 de abril a las 2:58

  • no funciona Porque envío un objeto de reino en lugar de un objeto en HashMap. Cuando intento ponerlo, veo el error.

    – Delfos

    12 de diciembre de 2017 a las 15:28


  • ¿Qué error obtienes? También asegúrese de que su pregunta contenga el problema real que tiene, ya que ahora usa un HashMap mientras que ahora mencionas un objeto del reino.

    –Frank van Puffelen

    12 de diciembre de 2017 a las 16:14

  • Mi aspecto de HashMap se parece a HashMap, es por eso que cuando traté de ponerlos en el método de actualización, vi el error sobre el tipo incorrecto, pero si uso el método set, todo está bien

    – Delfos

    13 de diciembre de 2017 a las 7:07

  • No estoy seguro de cómo un RealmObject parece, pero estas preguntas pueden ser relevantes: stackoverflow.com/search?q=%5Bfirebase%5D+RealmObject

    –Frank van Puffelen

    13 de diciembre de 2017 a las 15:13

  • Solo se refiere a Firestore. Hice lo mismo usando Firebase sin ningún problema. Pero Firestore necesita otra estructura de datos, por eso tengo un problema con el método de actualización. En el momento actual creé una nueva estructura (esta estructura es un poco redundante) y la actualización funciona perfectamente. No pude encontrar cómo usar la actualización para la estructura en mi publicación principal.

    – Delfos

    13 de diciembre de 2017 a las 15:29

¿Ha sido útil esta solución?