Creo que deberías usar la palabra clave await
try{ var user = await model.findOne({ _id: req.params.id}); } catch (e) { // Handle Errors };O
model.findOne({ _id: req.params.id}).then(result => { var user = result; }).catch(e=> { // Handle Errors });¿Ha agregado mergeParams en su enrutador? Esta opción agrega el objeto params a la solicitud const router = express.Router({ mergeParams: true });
entonces /predict/:id da como resultado req.params.id
Por defecto esta opción está deshabilitada en express
El problema es que no está usando await , por lo que en la línea console.log(user.examenes) la variable user no son los datos devueltos por mongo; es otro objeto sin atributo examenes . Y tratar de acceder al valor no está undefined .
Entonces puedes usar:
let user = await (usuario.findOne({_id: req.params.id}))