es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nombre de clave dinámica para MongoDB Realm

Estoy haciendo un Calendario de Navidad digital para un amigo. Cada día podrá reclamar un juego de Steam.

Entonces en la cuenta de usuario que le hice en mongodb, hay una clave llamada “codes” (objeto). La estructura es la siguiente:

_id: blbalbalba
codes: {
1 : {
title: GTA V,
code: AISHD-SDAH-HAUd,
claimed_at: ,
},
2 : {
title: Fortnite,
code: HHF7-d88a-88fa,
claimed_at: ,
}
}
Solo datos de ejemplo. Ahora, en la aplicación de cliente, cuando se presiona/abre el botón (puerta) 7, quiero insertar la fecha actual en la clave “claimed_at” en el objeto con el nombre clave “7”.

He intentado algunas variaciones de:

const result = await PrivateUserData.updateOne(
{ id: miID },
{ $set: { "codes.${door_number}.date_claimed" : fecha,
}
}
);

Pero esto no funciona. Lo que funcionó fue: “codes.5.date_claimed”. Por lo tanto, un camino estático. En ese caso, se actualizó la clave fecha_reclamada del objeto con nombre 5. ¿Pero cómo uso una ruta dinámica con una variable en lugar de un número?

¡Gracias de antemano!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para utilizar una ruta dinámica con una variable en la consulta de actualización de MongoDB, puede utilizar la notación de corchetes. Reemplace la notación de punto con la notación de corchetes y utilice el nombre de la variable para acceder a la clave del objeto. Aquí hay un ejemplo:

    const result = await PrivateUserData.updateOne(
      { id: myID },
      { $set: { [`codes.${door_number}.claimed_at`] : date } }
    );
    

    Esto establecerá dinámicamente la clave claimed_at para el objeto con el número de puerta dado en el objeto codes. La notación de corchetes nos permite usar una variable para el nombre de la clave.

Comments are closed.