JavaScript diferencia maiúsculas de minúsculas sobre os nomes das variáveis. Você tem
User
modelo e o User
resultado com o mesmo nome. Seu código funcionará com a seguinte alteração:
User.findById(id , function (err, user) {
/* ^ use small `u` */
if (err) return handleError(err)
/* rest of your code */
Lembre-se também de que mais adiante em seu código você está declarando outra variável chamada
user
. Você precisará mudar isso para algo diferente.