En respuesta a tu último comentario.
Tiene razón en que nulo es un tipo de valor, pero los tipos nulos son una forma de decirle al intérprete que no tiene valor . por lo tanto, debe establecer los valores en cualquier valor que no sea nulo o obtendrá el error. en su caso, establezca esos valores en cadenas vacías. es decir,
var newUser = new user({
/* We will set the username, email and password field to null because they will be set later. */
username: '',
passwordHash: '',
email: '',
admin: false
}, { _id: false });