Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

459
Views
Cloud Firestore: Actualizar campos en objetos anidados con clave dinámica

siguiendo la documentación oficial de firestore:

 { name: "Frank", favorites: { food: "Pizza", color: "Blue", subject: "recess" }, age: 12 } // To update favorite color: db.collection("users").doc("frank").update({ "favorites.color": "Red" })

Me gustaría usar una clave dinámica en lugar de color.

 db.collection("users").doc("frank").update({ "favorites[" + KEY + "].color": true });

esto, por supuesto, no es posible y arrojará un error.

He estado tratando de hacer esto:

 db.collection("users").doc("frank").update({ favorites: { [key]: { color": true } } });

En realidad, se está actualizando con la clave correcta pero, desafortunadamente, está sobrescribiendo las otras claves (se están eliminando).

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Encontré la solución inspirada en una solución de firebase (reemplazando "/" por ".").

 var usersUpdate = {}; usersUpdate[`favorites.${key}.color`] = true; db.collection("users").doc("frank").update(usersUpdate);
over 4 years ago · Santiago Trujillo Report

0

Esta solución funcionó para mí:

 db.collection('users').doc('frank').update({ [`favorites.${key}.color`]: true });
over 4 years ago · Santiago Trujillo Report

0

Solo una nota sobre una posible trampa: después de descubrir que puede actualizar los campos anidados usando una sintaxis de puntos, intenté usar set() de la misma manera, ya que necesitaba que funcionara ya sea que el objeto ya exista o no:

 var updateObj = {['some.nested.property']: 9000}; docRef.set(updateOb, {merge: true});

Desafortunadamente, esto no funciona; en su lugar, establece una propiedad cuya clave es some.nested.property . Incoherente, pero bueno.

Afortunadamente, parece que set(updateObj, {merge: true}) realiza una fusión profunda, por lo que si construye su objeto de actualización como un objeto completamente anidado, sus objetos anidados también se fusionarán correctamente:

 // create the object db.doc('testCollection/doc').set({p1: {['p2']: {p3: true}}}, {merge: true}) // update the existing object db.doc('testCollection/doc').set({p1: {['p2']: {p4: true}}}, {merge: true}) // result is now this: { p1: { p2: { p4: true, p3: true } } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!