У меня есть одно вычисляемое поле в схеме mon goose. Хочу рассчитать в данный момент на «сохранить». И я не могу понять, почему у меня ошибка:
TypeError: this.$set.call is not a function
at Document.set [as overallStageBudget]
У меня есть код:
projectSchema.pre('save', function(next) {
if (this.stages) {
for (let i = 0; i < this.stages.length; i++) {
this.stages[i].stageBudget.overallStageBudget = calcOverallStageBudget(this.stages[i]);
}
next();
}
И у меня такая же ошибка, когда я пытаюсь вычислить totalStageBudget в express маршруте .
calcO TotalStageBudget:
exports.calcOverallStageBudget = stage => {
let budget = 0;
if (stage && stage.stageBudget) {
for (const key in stage.stageBudget) {
if (key !== 'procurement' && key !== 'overallStageBudget') {
budget += stage.stageBudget[key];
}
}
}
return budget;
};
модель:
const stageBudget = {
_id: false,
development: { type: Number },
services: { type: Number },
software: { type: Number },
workAgreement: { type: Number },
hardware: { type: Number },
fot: { type: Number },
fotUnderObligations: { type: Number },
procurement: { type: Number },
overallStageBudget: { type: Number, default: 0 },
};
const stages = [
{
_id: false,
results: [{ type: String }],
releaseDate: { type: String, default: '' },
stageType: {
type: String,
required: true,
enum: PRIORITIES,
},
employeesQuantity: { type: Number },
stageBudget: stageBudget,
},
];
const project = {
_id: mongoose.Schema.Types.ObjectId,
id: { type: Number, required: true, index: true },
projectType: { type: String },
name: { type: String, required: true, index: true },
...
stages: { type: stages },
...
};
const projectSchema = mongoose.Schema(project);