Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

570
Vistas
JavaScript/FireStore: no se puede eliminar la clave de campo (variable UID)

Estoy tratando de crear un formulario en el que, cuando se envíe, primero se elimine el campo existente y luego se envíe un campo nuevo. El campo contiene una clave que es el UID del usuario y el valor es la marca de tiempo.

Funciona cuando codifico la clave exacta, pero no funciona si la uso como variable.

Este código funciona.

 db.collection("jmTest").doc(docID).update({ "food.up.8ebenfqRMmapx84tRpCp6dY3F4j1": firebase.firestore.FieldValue.delete(), "food.down.8ebenfqRMmapx84tRpCp6dY3F4j1": firebase.firestore.FieldValue.delete() });

Ejemplo de trabajo 1 Ejemplo de trabajo 2

Este código no funciona.

 var userUID = user.uid // declare and initialize db.collection("jmTest").doc(docID).update({ "food.up.${userUID}": firebase.firestore.FieldValue.delete(), "food.down.${userUID}": firebase.firestore.FieldValue.delete() });

Este código no funciona.

 db.collection("jmTest").doc(docID).update({ food: { up: { userUID: firebase.firestore.FieldValue.delete() } } });

También he intentado usar estos en lugar de solo "uid".

 [userUID] ${userUID} String(userUID)

Este código no funciona.

 var userUID = user.uid // declare and initialize var foodUp = "food.up." + [userUID]; var foodDown = "food.down." + [userUID]; db.collection("jmTest").doc(docID).update({ foodUp: firebase.firestore.FieldValue.delete(), foodDown: firebase.firestore.FieldValue.delete() });

ejemplo no funcional

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En el siguiente bloque de código, ha intentado utilizar cadenas con plantilla, pero las ha encerrado entre comillas dobles en lugar de acentos graves. Además, no está permitido usar cadenas de plantilla en declaraciones de objetos, por lo que también debe encerrarlos entre corchetes para usar la sintaxis de expresión.

 db.collection("jmTest").doc(docID).update({ "food.up.${userUID}": firebase.firestore.FieldValue.delete(), "food.down.${userUID}": firebase.firestore.FieldValue.delete() });

debiera ser

 db.collection("jmTest").doc(docID).update({ [`food.up.${userUID}`]: firebase.firestore.FieldValue.delete(), [`food.down.${userUID}`]: firebase.firestore.FieldValue.delete() });

De manera similar, en las siguientes líneas, intenta usar el valor dinámico de una variable, pero en su lugar especifica el nombre de las claves como foodUp y foodDown en lugar de usar el valor de la expresión/variable como clave:

 var userUID = user.uid // declare and initialize var foodUp = "food.up." + [userUID]; // while this "works", use: "food.up." + userUID var foodDown = "food.down." + [userUID]; db.collection("jmTest").doc(docID).update({ foodUp: firebase.firestore.FieldValue.delete(), foodDown: firebase.firestore.FieldValue.delete() });

debiera ser

 const userUID = user.uid // declare and initialize const foodUp = "food.up." + userUID; const foodDown = "food.down." + userUID; db.collection("jmTest").doc(docID).update({ [foodUp]: firebase.firestore.FieldValue.delete(), [foodDown]: firebase.firestore.FieldValue.delete() });

o

 const userUID = user.uid // declare and initialize db.collection("jmTest").doc(docID).update({ ["food.up." + userUID]: firebase.firestore.FieldValue.delete(), ["food.down." + userUID]: firebase.firestore.FieldValue.delete() });

Cuando utilice los bloques de código anteriores, tenga cuidado de que el userUID de usuario no sea null o undefined , ya que puede dar lugar a un comportamiento no intencionado.

Como nota al margen, es 2022, use let y const en lugar de var cuando sea adecuado y apropiado.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda