To, co się dzieje, to to, że żadna z walidacji, oprogramowania pośredniczącego ani wartości domyślnych Mongoose nie jest używana podczas wywoływania żadnej z rodziny metod „aktualizacji”, takich jak findByIdAndUpdate . Są wywoływane tylko przez wywołania save lub create .
Powodem tego jest to, że wywołania aktualizacji są skutecznie przekazywane do sterownika natywnego, a Mongoose zapewnia jedynie rzutowanie typów pól na podstawie definicji schematu.
Aktualizacja Mongoose 4.0
Mongoose obsługuje teraz ustawianie wartości domyślnych, gdy nowy dokument jest tworzony podczas update , findOneAndUpdate lub findByIdAndUpdate upierdliwy. Ustaw setDefaultsOnInsert opcja true aby to umożliwić. Używa $setOnInsert operatora, aby utworzyć wartości domyślne przy wstawianiu.
var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...