Enregistrer / créer un formulaire nested pour enregistrer / mettre à jour des données dans mongodb via mongoose conformément au schéma mongoose

J’ai créé le schéma suivant pour la sauvegarde d’un quiz dans mongodb

var answerSchema = new Schema({ answer: Ssortingng, correct: Boolean }); var questionSchema = new Schema({ title: Ssortingng, tag: Ssortingng, chapterName: Ssortingng, marks: Number, negativeMarks: Number, correctAnswerExplanation: Ssortingng, hint: Ssortingng, answers: [answerSchema] }); var quizSchema = new Schema({ courseId: Number, courseName: Ssortingng, lectureId: Number, lectureName: Ssortingng, popupTime: Number, teacherName: Ssortingng, questions: [questionSchema] }); var Quiz = mongoose.model('quiz', quizSchema ); 

Je suis capable de stocker les valeurs codées en dur de la manière suivante –

 var quiz1 = new Quiz({ courseId: 4, lectureId: 5008, popupTime: 3, teacherName: 'Charles Xavier', questions: [ { "title": "Which is the Capital of India " , "answers": [ { "answer": "Delhi", "correct": true }, { "answer": "Bangalore", "correct": false }, { "answer": "Mumbai", "correct": false }, { "answer": "Chennai", "correct": false } ] }, { "title": "Where is facebook hosted? " , "answers": [ { "answer": "Heroku", "correct": true }, { "answer": "Digital Ocean", "correct": false }, { "answer": "AWS", "correct": true }, { "answer": "SWF", "correct": false } ] } ] }); quiz1.save(function(err, q) { console.log("Saved ----"); console.log(q); res.json(q); }); 

Cela fonctionne parfaitement bien.

Maintenant, quel est le meilleur moyen de créer un formulaire graphique afin que, lorsque l’utilisateur renseigne les détails, celui-ci soit converti en json et enregistré dans mongodb via Mangouste.

Je suis venu avec le formulaire suivant –

 

Et sur le formulaire de soumission, je sérialise les données de formulaire à l’aide de cette capture –

 var o = {}; var a = $( "#aj" ).serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); 

Et dans le gestionnaire d’itinéraire express, je l’enregistre de la même manière – c’est ce que je reçois dans le corps de la requête via express –

 { questions: [ 'Q 1' ], answers: [ ' A 1', 'A 2', 'A 3', 'A 4' ] } var quiz = req.body(ie the above object) var add = new Quiz(quiz); add.save(function(err, quiz) { if(err) { console.log(err); } else { console.log("Saved"); console.log(quiz); } }); 

Mais j’obtiens l’erreur suivante –

 [TypeError: Cannot use 'in' operator to search for '_id' in Q 1] 

Comment puis-je résoudre ce problème? S’il vous plaît, aidez-moi, car je viens de commencer avec mongodb et mongoose et je viens d’un environnement SQL.

Aussi, comment devrais-je concevoir un formulaire qui prend des entrées de plusieurs questions et chaque question peut avoir plusieurs réponses et chaque réponse a un bit pour indiquer si c’est une réponse correcte ou non.