Ошибка при предварительном сохранении в пн goose при попытке вычислить поле - PullRequest
0 голосов
/ 14 июля 2020

У меня есть одно вычисляемое поле в схеме 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...