I have something like a quiz app and the user should answer and see the result after submitting. I save the results in mongoDB database and I use foreach loop because it is more than one question and I want to send the result to user after saving the document note: saving document and replacing it works fine. my code looks like this:
//answers model
const User_Result = require("../models/result_model")
router.post("/quiz/results", (req, res)=>{
var lastResult = 1;
answersLenght.forEach((single, i) => {
if(i==0) { //for the first right answer it should creat a document
var result = new User_Result({
id: req.user._id,
endResult: lastResult
})
result.save()
} else { // for other answers it should update endResult
lastResult = lastResult + 1
User_Result.findOneAndReplace({_id: req.user._id}, {endResult: lastResult}, {new: true}, (err, r)=>{console.log(r)})
}
})
//it send empty []
User_Result.find({_id: req.user._id}).then(data=>{
res.send(data)
})
})
it send empty [ ] because it looks for document before saving it