首页 > 解决方案 > 如何从模式中删除一个项目,该模式是猫鼬中的对象数组?

问题描述

我想从我的架构中的简历列表中删除一份简历。

我正在使用猫鼬(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);

我不知道如何继续删除。我无法进行更新或拉取工作,因为它们似乎都适用于对象模式中的数组。

标签: node.jsmongoosebackendmongoose-schema

解决方案


假设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()

推荐阅读