Ошибка учебное упражнение, чтобы получить валидаторы для работы с 'document.update', я наткнулся на то, что я не понимаю.Что делает контекст: опция «запрос» при использовании мангуста?
Я знаю, что это не сработало, но одна из вещей, которые я пробовал, заключалась в настройке моих параметров на {runValidators: true, context: 'query'}. В моей функции проверки достоверности я попробовал console.logging (this), с контекстом и без него: опция «запрос».
Не было никакой разницы. Я получил большой объект (это называется «объектом запроса»?) Это похоже на то, что я читал here.
В приведенной выше функции проверки цвета это означает, что документ проверяется при использовании проверки документа. Однако при запуске проверки обновлений обновляемый документ может не находиться в памяти сервера, поэтому по умолчанию значение этого параметра не определено.
Это не было неопределенным, даже без контекстного варианта.
Я даже попытался сделать его функцией стрелки, чтобы увидеть, было ли в лексике это другое. В этом случае это было undefined, но опять же изменение параметра контекста не помогло. (Я все еще учился, поэтому я не знаю, важна ли эта часть).
в модели:
let Property = mongoose.model('Property', {
name: {type:String, required:true},
occupancy: {type:String},
maxTenants: Number,
tenants: [{ type:mongoose.Schema.Types.ObjectId, ref: 'Tenant', validate: [checkMaxTenants, "Maximum tenants exceeded for this property. Tenant not added."]}]
});
function checkMaxTenants(val){
console.log("this",this);
// return this.tenants.length <= this.maxTenants;
return true;
}
и в маршруте:
property.update({$set: {tenants:property.tenants}},{new:true,runValidators:true,context:'query'}, function(err,savedProperty){
Что-нибудь помочь мне лучше понять несоответствие между тем, что я думаю, что я читаю и то, что я вижу, было бы здорово !