node.js - 如何从模式中删除一个项目,该模式是猫鼬中的对象数组?
问题描述
我想从我的架构中的简历列表中删除一份简历。
我正在使用猫鼬(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);
我不知道如何继续删除。我无法进行更新或拉取工作,因为它们似乎都适用于对象模式中的数组。
解决方案
假设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()
推荐阅读
- java - 如何正确使用枚举?
- react-native - 是否可以等待组件渲染?React 测试库/Jest
- javascript - 使用 jQuery.ajax 每隔一段时间从外部文件返回文本
- wpf - WPF - 将启动窗口添加到项目后无法关闭应用程序
- angular - 从 HTML 调用函数到打字稿不等待完成
- python - 熊猫数据框上的循环和条件
- autodesk-forge - 本地化 Autodesk Forge 扩展按钮
- sql - 这可以在没有联合运算符的情况下重写吗?
- python - 如何使用 pysimplegui 添加控制台以在布局字段中显示结果
- kivy - 是否可以在轮播中使用滑块?