JavaScript fa distinzione tra maiuscole e minuscole per i nomi delle variabili. Hai User
modello e l'User
risultato con lo stesso nome.
Il tuo codice funzionerà con la seguente modifica:
User.findById(id , function (err, user) {
/* ^ use small `u` */
if (err) return handleError(err)
/* rest of your code */
Tieni inoltre presente che più avanti nel tuo codice stai dichiarando un'altra variabile denominata user
. Dovrai cambiarlo in qualcosa di diverso.