обновить массив объекта объекта MongoDB - PullRequest
0 голосов
/ 12 октября 2018

У меня есть модель

student: {
   package:{
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Package',
   },
   history: [
    {
      package: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Package',
      },
      orderDate: {
        type: Date,
        default: new Date().toLocaleDateString('id'),
      },
      Status: {
        type: String,
        default: 'Pending',
      },
    },
  ],
}

Я хочу обновить Student.package и Student.history за 1 проход

Iсоздать этот метод в моей модели

StudentSchema.methods.updatePackage= function(idPackage) {
  this.package = idPackage;
  return this.save();
};

StudentSchema.methods.updateHistory= function(idPackage) {
  this.history.push(idPackage);
  return this.save();
};

, и я пытаюсь сделать что-то подобное в моем контроллере

buyPack: async (req, res, next) => {
    try {
      let dataStudent = await Student.findById('5b83443040e3751bb4e32a21');
      await dataStudent.updatePackage(req.body);
      await dataStudent.updateHistory(req.body);
      return res.json(dataStudent);
    } catch (err) {
      console.log(err);
      next(err);
    }
  },

Iдумаю, что методы first и second неверны, но я пытался выяснить это почти за полдня, но все же не повезло.Каков наилучший способ достижения моих целей?

Я ошибаюсь в своей модели?или методы, которые я создал, неправильны?

1 Ответ

0 голосов
/ 12 октября 2018

Модель Mongoose переименовывается во множественное число .. и вы ссылаетесь в единственном числе с помощью «S», «Package» меняет ее на «Packages»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...