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

279
Vistas
Cómo estructurar el esquema del cuestionario condicional de la encuesta en mongo db

Estoy creando un cuestionario condicional en el que cada usuario debe responder algunas preguntas para registrarse. Cada pregunta siguiente aparecerá en función de la respuesta de la pregunta anterior enviada.

Entonces creo un esquema para preguntas y respuestas.

Esquema de preguntas:

 _id: Object Id, name: String, text: String, hint: String, skip: boolean, type: String, // boolean, multiple, dropdown etc children: Array //Ojbect Ids of child question

Esquema de respuesta:

 _id: Object Id, question_id: Reference Id, next_question: Reference Id, text: String, isBool: boolean
  1. El administrador puede agregar/editar/eliminar la pregunta, entonces, ¿se requiere alguna actualización para este esquema?
  2. ¿Cómo puedo administrar una pregunta anidada en la misma página, es decir, cómo sabrá el front-end que la próxima pregunta se mostrará en la misma página o en la siguiente? ¿Si agrego un campo más será suficiente?
  3. Cómo evitar el bucle de preguntas, es decir, Q1->Q2->Q3->Q1.

Entonces, no creo que necesites niños ya que la próxima pregunta será determinada por next_question

Hay dos tipos de pregunta: 1. Normal, 2. Niño. Entonces, si algún usuario selecciona una pregunta que tiene hijos, debo mostrar las preguntas de los hijos en la misma página. Y si una pregunta no tiene hijos, los enviaré a la siguiente pregunta en una nueva pantalla.

Los niños mostrarán según la respuesta.

Por ejemplo P: ¿Tienes algún coche? Si el usuario hace clic en sí, muéstrele preguntas para niños que pueden solicitar información sobre el automóvil. Pero si el usuario selecciona no, no necesitamos hacer más preguntas para niños y lo redirigiré a la página siguiente que tiene una nueva pregunta.

En línea simple: la pregunta de los niños aparecerá en la misma página, la pregunta normal siempre aparecerá en una página nueva.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tu pregunta es algo amplia. Y no sé si entendí bien, pero aquí va un intento.

Primero, modificaría un poco tu diseño.

Sabemos que cada pregunta tiene un montón de respuestas. Yo consideraría esa relación de uno a muchos. En MongoDB, hay dos formas recomendadas de modelar esa relación: usar documentos incrustados o referencias . Creo que esta última sería una elección ideal en tu caso. El beneficio de este enfoque es que podrá usar populate() para obtener fácilmente todas las respuestas relacionadas para cada pregunta. De lo contrario, su enfoque actual podría requerir que use algún tipo de agregación/búsqueda .

Ahora, cada respuesta determina a qué pregunta ir, ¿correcto? Entonces, no creo que necesite children ya que la próxima pregunta será determinada por next_question .

Así es como lo haría:

Esquema de preguntas

 _id: Object Id, name: String, text: String, hint: String, skip: boolean, type: String, // remove children answers: Array of Reference Ids

Esquema de respuesta

 _id: Object Id, // remove question_id next_question: Reference Id, text: String, isBool: boolean

P1: El administrador puede agregar/editar/eliminar la pregunta, ¿hay alguna actualización necesaria para este esquema?

Si está preguntando si necesita realizar algún cambio en el esquema con el requisito de que el administrador gestione las preguntas . Yo diría que no.

P2: ¿Cómo puedo administrar una pregunta anidada en la misma página, es decir, cómo sabrá el front-end que la próxima pregunta se mostrará en la misma página o en la siguiente? ¿Si agrego un campo más será suficiente?

Uh... ¿Si está preguntando cómo hacer que cada pregunta permanezca en la misma página sin recargar? entonces estás hablando de posiblemente AJAX.

En su aplicación Node, configuraría una ruta para obtener la "primera" pregunta con sus respuestas relacionadas y una ruta para obtener una pregunta "específica" por su ID con sus respuestas relacionadas.

Construiría su página de preguntas comenzando con la "primera" ruta. Cuando el usuario hace clic en una respuesta o algo así, haría una llamada AJAX a la ruta "específica" pasando la next_question relacionada como parámetro. Utilice la respuesta de la llamada para reconstruir la parte de la página.

Sin embargo, trabajar con la manipulación de AJAX y DOM, que son cuestiones completamente distintas.

P3: Cómo evitar el bucle de preguntas, es decir, Q1->Q2->Q3->Q1.

Supongo que la página para administrar cada pregunta con sus respuestas relacionadas tendrá un mecanismo para establecer la next_question para cada respuesta. El administrador puede simplemente asegurarse de que las next_question estén en orden.

about 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