node.js - 删除父记录时,还要删除猫鼬节点js中的参考记录|| 删除父记录时如何删除参考记录
问题描述
当我删除课程时,当然也会删除参考记录。
例如,我有 mca 课程,它的参考主题是 c、java、python,当我删除 mca 时,也会删除所有参考主题。
我怎样才能做到这一点。请帮忙
这是 Course.js
const mongoose = require('mongoose');
const Subject = require('./Subject');
const courseSchema = new mongoose.Schema({
course_name: String,
course_semester: Number
})
courseSchema.virtual('subjects', {
ref: 'Subject',
localField: '_id',
foreignField: 'course_id'
})
// Delete subject when course is removed
courseSchema.pre('remove', async function (next) {
const course = this
await Subject.remove({ course_id: course._id })
next()
})
const Course = mongoose.model('Course', courseSchema)
module.exports = Course
这是 Subject.js
const mongoose = require('mongoose');
const subjectSchema = new mongoose.Schema({
subject_code: String,
subject_name: String,
subject_theory_marks: Number,
subject_practicle_marks: Number,
course_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Course'
}
})
const Subject = mongoose.model('Subject', subjectSchema)
module.exports = Subject
courseRoute.js
router.get('/admin/delete-course/:id', adminAuthMiddleware,
async (req, res) => {
try {
await Course.findByIdAndRemove(req.params.id, (err, doc) => {
if (!err) {
res.redirect('/admin/view-course');
} else {
res.send('Error in Course delete :' + err);
}
})
} catch (err) {
res.send(err);
}
});
解决方案
我找到了这个问题的解决方案。你需要在你的路线中调用 remove()
courseRoute.js
router.get('/admin/delete-course/:id', adminAuthMiddleware,
async (req, res) => {
try {
await Course.findByIdAndRemove(req.params.id, (err, doc) => {
if (!err) {
doc.remove() //here is the solution
res.redirect('/admin/view-course');
} else {
res.send('Error in Course delete :' + err);
}
})
} catch (err) {
res.send(err);
}
});
推荐阅读
- java - 我无法在 MacOS 上安装 maven
- javascript - 如何使用 Nativescript 和 Vanilla JS 使用 Firebase 数据填充 Listview
- r - R中的动态名称(子集和合并)
- azure - 无法读取存储帐户和密钥 - Azure
- php - 会话数据如何从一个页面传递到另一个页面?
- python - 如何优化三个连续的 str.replace() 调用?
- python - Python Tkinter 记录到 ScrolledText 和 FileHandler
- git - 删除提交并取消合并
- node.js - 我可以在 package.json 中提及最新的依赖项吗
- ruby - 使用 axlsx 创建数组公式