JavaScript rozróżnia wielkość liter w nazwach zmiennych. Masz User model i User wynik o tej samej nazwie.
Twój kod będzie działał z następującą zmianą:
User.findById(id , function (err, user) {
/* ^ use small `u` */
if (err) return handleError(err)
/* rest of your code */
Pamiętaj też, że w dalszej części kodu deklarujesz inną zmienną o nazwie user . Musisz to zmienić na coś innego.