如何从模式中删除项目,该模式是猫鼬中的对象数组?

时间:2020-04-18 22:46:08

标签: node.js mongoose backend mongoose-schema

我要从架构中的简历列表中删除简历。

我正在使用猫鼬(5.9.7)并表达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 个答案:

答案 0 :(得分:1)

假设remove是您要删除的简历的实例(您使用await Resume.findById(resumeId)获得的简历):

1)删除引用:您可以对$pull进行update(要提取的值将是简历的_id):

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

..或获取用户,在resumes中删除相应的条目,保存用户。

2)使用简单的remove删除简历:

await resume.remove()