JavaScript distingue entre mayúsculas y minúsculas en los nombres de las variables. Tienes User
modelo y el User
resultado con el mismo nombre.
Su código funcionará con el siguiente cambio:
User.findById(id , function (err, user) {
/* ^ use small `u` */
if (err) return handleError(err)
/* rest of your code */
También tenga en cuenta que más adelante en su código está declarando otra variable llamada user
. Deberá cambiar eso a algo diferente.