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

185
Vistas
construcción de consulta de matriz de mongoose con literales de plantilla de javascript

estoy usando mongodb y mongoose con expressjs

Mi base de datos tiene la siguiente matriz:

 _id:6262013fa90e7b533809140d isactive:true schedule:Array 0:Object 1:Object 2:Object 3:Object 4:Object 5:Object 6:Object name:"whatever" description:"describe somthing"

En mi ruta expressjs, estoy tratando de crear una consulta como esta:

 app.get("/getmenu", (req, res)=>{ let getdate = new Date() let getday = getdate.getDay()-1 Category.find({ "schedule.1.availabletoday" : "true" }, function(error, categories){ console.log("categories :", categories) res.json({"activecategories" : categories}) }) })

Esto funciona y devolvió los resultados correctos, excepto que necesito la siguiente línea para incluir un literal de plantilla o algo equivalente, déjame explicarte:

 "schedule.1.availabletoday"

Necesito reemplazar el 1 con el valor getday. Si el valor de getday es 0, entonces la consulta será

 "schedule.0.availabletoday"

Si el valor de getday es 2, entonces la consulta buscará:

 "schedule.2.availabletoday"

Entonces, ¿cómo incluyo el valor getday en mi consulta para que sea así:

 "schedule.getday.availabletoday"

Lo intenté

 "schedule.${getday}.availabletoday"

pero devolvió resultados vacíos, por vacío me refiero a esto: []

Lo intenté

 "schedule.getday.availabletoday"

la consulta devolvió resultados vacíos: []

De acuerdo con el documento de mongodb, para buscar los elementos de la matriz, necesito las comillas alrededor de mi consulta de elementos de la matriz. Así que no puedo simplemente escribir esto:

 schedule.getday.availabletoday

¿Necesito actualizar mi aplicación de nodo o expressjs para poder usar literales de plantilla o hay algo más que me falta aquí?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Usar cadena de plantilla como

 `schedule.${getday}.availabletoday`

Según tu ejemplo:

 app.get("/getmenu", (req, res)=>{ let getdate = new Date() let getday = getdate.getDay()-1 Category.find({ `schedule.${getday}.availabletoday` : true }, function(error, categories){ console.log("categories :", categories) res.json({"activecategories" : categories}) })
over 4 years ago · Santiago Trujillo Denunciar

0

Esto debería funcionar para usted:

 let getdate = new Date(); let day = getdate.getDay()-1; let query = {}; query[`schedule.${day}.availabletoday`] = true; Category.find(query, (err, categories)=> { console.log("categories :", categories) res.json({"activecategories" : categories}) })
over 4 years ago · Santiago Trujillo 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