W odpowiedzi na Twój ostatni komentarz.
Masz rację, że null jest typem wartości, ale typy null są sposobem na poinformowanie interpretera, że nie ma braku wartości . w związku z tym należy ustawić wartości na dowolną wartość inną niż null lub pojawi się błąd. w twoim przypadku ustaw te wartości na puste ciągi. tj.
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 });