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

282
Views
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 answers
Answer question

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 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!