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.