Как удалить элемент из схемы, представляющей собой массив объектов в mon goose? - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу удалить резюме из списка резюме в моей схеме.

Я использую mon goose (5.9.7) и express js.

Схема

const ResumeSchema = new Schema({
  user: {
    type: Schema.Types.ObjectId,
    ref: "User"
  },
  fileLink: { type: String, required: true },
  fileName: { type: String, required: true },
  description: { type: String, required: true }
});

module.exports = Resume = mongoose.model("Resume", ResumeSchema);

У меня есть маршрут для получения всех резюме.

Я также создаю ссылку на резюме в своей ProfileSchema.

Схема профиля

const ProfileSchema = new Schema({
  user: {
    type: Schema.Types.ObjectId,
    ref: "User"
  },
  resumes: [
    {
      type: Schema.Types.ObjectId,
      ref: "Resume"
    }
  ],
  name: {
    type: String,
    required: true
  },

});

module.exports = Profile = mongoose.model("Profile", ProfileSchema);

Я не знаю, как добиться удаления. Я не мог заставить работать обновление или вытащить, поскольку все они, кажется, работают для массива внутри схем объекта.

1 Ответ

1 голос
/ 19 апреля 2020

Предполагая, remove является экземпляром резюме, которое вы хотите удалить (которое вы получили, используя await Resume.findById(resumeId)):

1) Удалить ссылку: вы можете сделать update с $pull (значение для извлечения будет _id резюме):

// Assuming that `resume.user` is *not* populated
await User.update({ _id: resume.user }, { $pull: { resumes: resume._id } })

.. или получите пользователя, удалите соответствующую запись в resumes, сохраните пользователя.

2) Удалить резюме с помощью простого remove:

await resume.remove()
...