Похоже, вам вообще не нужно get
здесь вообще. Поскольку вы просто хотите сгенерировать динамическое значение, вы можете создать свой собственный метод для схемы methods
, например:
schema.methods.average = function(){
const average = this.totalCarrots / this.numberOfRabbits;
return average ? Math.ceil(average) : null;
}
Теперь вы можете вызывать этот метод для экземпляра вашей схемы:
const doc = new schema({ totalCarrots: 4, numberOfRabbits: 2 })
doc.average() // should return 2
get
предназначено для использования в поле, на котором вы на самом деле храните данные, и оно может изменять это поле при каждом обращении к нему. Например, допустим, у нас есть модель Product с полем price
. Наши цены хранятся как числа с плавающей точкой, и по какой-либо причине мы хотим округлять значение каждый раз, когда мы его читаем. это было бы хорошим местом для get
метода:
const ProductSchema = new Schema({
price: {
type: Number,
get: function(value){
// value arg is referring to the value of a model instance's price
return Math.round(value)
}
}
})
const Product = mongoose.model('Product', ProductSchema)
const product = new Product({ price: 15.80 })
product.price // will be 16 because we round the stored value in the get method