Penso che il tuo valore di ritorno finalQuizs viene compilato prima di forEach dichiarazione. Quindi le query di aggiornamento non lo cambiano come previsto. Questo è il motivo per cui vengono aggiornati i dati dopo l'aggiornamento della pagina.
Se prevedi di avere user_participated: true nel valore restituito, dovresti ottenerlo dopo findOneAndUpdate line. Dovresti fare qualcosa del genere alla fine di try blocco:
return await newQuiz.findAll();