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

365
Vistas
solo inserte variables que tengan valores, no node.js indefinido

Así que tengo esto:

 var dates = { monday: req.body.monday, tuesday: req.body.tuesday, wednesday: req.body.wednesday, thursday: req.body.thursday, friday: req.body.friday, saturday: req.body.saturday, sunday: req.body.sunday } console.log(Object.values(dates))

la forma en que esto funciona es que puede seleccionar una casilla de verificación en el front-end, y todos los resultados se enviarán al backend independientemente de si lo marcó o no. Ahora, necesito clasificar esos resultados para insertar solo los que fueron seleccionados (no tienen valores definidos, como la respuesta de matriz a continuación).

en el conjunto de resultados del bucle for, se devuelve así:

 [ '2', undefined, undefined, undefined, undefined, undefined, '1' ]

como puede ver, 5/7 no están definidos. Así que tengo una consulta de inserción estándar en SQL, pero necesito insertar solo los valores que están definidos. así que en mi cabeza estoy pensando insert into clients where Object.values(dates) != undefined , pero sé que eso no está bien, especialmente porque esa es ahora la forma en que funciona la consulta sql lol.

Tengo esto:

 var addclient = "insert into clients (NAME, EMAIL, PHONE_NUMBER, TRAINER_NAME, HOUR, MINUTE, DATES) values ('" + name + "', '" + email + "', '" + phonenumber + "', '" + req.session.username + "', '" + hour + "', '" + minute + "', '" + dates + "')";

¿Cómo puedo hacer esto?

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

0

Además de la pregunta real, usar una entrada no saneada para crear una cadena sql en la forma en que se muestra en el fragmento es un gran riesgo. Permite a un atacante realizar una inyección de sql. Vea más aquí: https://owasp.org/www-community/attacks/SQL_Injection

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si espera insertar los valores como una cadena delimitada por comas, puede lograrlo haciendo lo siguiente:

 const formattedString = Object.values(dates).filter(el => el).join(', '); var addclient = "insert into clients (NAME, EMAIL, PHONE_NUMBER, TRAINER_NAME, HOUR, MINUTE, DATES) values ('" + name + "', '" + email + "', '" + phonenumber + "', '" + req.session.username + "', '" + hour + "', '" + minute + "', '" + formattedString + "')";

Tenga en cuenta que cambié las "fechas" en su método de inserción a la nueva "cadena formateada". Dado su ejemplo, formattedString sería "2, 1".

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