Я делаю приложение, в котором я буду устанавливать количество наборов викторин, которые будут содержать количество вопросов, вариантов и правильных ответов.
Отдельный вопрос будет отображаться пользователю в виде формы без ответа, и вскоре пользователь выберет вариант и отправит форму, она перейдет к другому набору данных с именем «Ответы». каждый объект ответа будет нести «участвующий_пользователь_id», «quiz_id», «ответы». Ответ будет содержать каждый «question_id» и «user_answer».
Теперь мне нужен какой-то запрос, который объединит эти два набора данных, а в наборе «викторина» добавит «user_answer» после каждого вопроса.
{
_id : 856803,
title : My quiz title,
active : on,
questions : [
{
_id : 135224,
options : [a, b c, d],
question : here is my question one ?,
answer : a,
},
{
_id : 135229,
options : [a, b c, d],
question : here is my question two ?,
answer : a,
}
]
}
{
_id : 1234,
quiz_id : 856803,
answers : [
{
_id: 2367,
question_id : 135224,
answer : a
} ,
{
_id: 2364,
question_id : 135229,
answer : c
}
]
}
{
_id : 856803,
title : My quiz title,
active : on,
questions : [
{
_id : 135224,
options : [a, b c, d],
question : here is my question one ?,
answer : a,
user_answer : a
},
{
_id : 135229,
options : [a, b c, d],
question : here is my question two ?,
answer : a,
user_answer : c
}
]
}





db.getCollection('quiz').findOne({}, function(err, doc){
db.getCollection('answers').findOne({quiz_id : doc._id}, function(err, ans){
doc.questions.forEach( function( item) {
for( let i = 0; i < ans.answers.length; i++ ) {
if ( ans.answers[i].question_id === item._id )
item.user_answer = ans.answers[i].answer;
}
})
})
let _id = doc._id
delete doc._id // for handling duplicate key error in update
db.getCollection( 'quiz' ).update({_id: _id}, doc, function(err, result){
console.info( "doc updated as per your requirements")
})
})
Большое спасибо, сэр, мне очень помогли. Я совершенно новичок в этом, поэтому, если вы позволите, могу я спросить еще один?
Конечно. И если это вам очень помогло, примите этот ответ.
Да, сэр, я последовал твоему указанию. вот еще одна моя борьба с прошлой ночи stackoverflow.com/questions/54059355/…
В порядке. Конечно. Я отвечу на этот вопрос как можно лучше. Так что примите этот ответ. Чтобы это помогло и другим
Хорошо, извините, я совершенно новичок, я не понял, когда вы сказали принять ответ! , чувствую себя таким счастливым, что наконец-то получил такой контакт, как вы, по крайней мере, я могу спросить или поделиться своими баллами :)
кто-нибудь может помочь?