(MONGODB)删除父集合时如何删除引用数据
(MONGODB) How to remove referenced data when parent collection is deleted
我有两个模式 Folder 和 modelFile,如下所示..
文件夹架构
const mongoose = require('mongoose')
const {ObjectId} = mongoose.Schema
const folderSchema = new mongoose.Schema({
title:{
type: String,
},
belongsTo:{
type:ObjectId,
ref:"Project"
}
})
module.exports = mongoose.model("Folder",folderSchema)
模型文件架构
const mongoose = require("mongoose");
const {ObjectId} = mongoose.Schema
const modelFileSchema = new mongoose.Schema({
createdAt: {
type: Date,
default: Date.now,
},
name: {
type: String,
required: [true, "Uploaded file must have a name"],
},
image:{
type:String
},
belongsTo:{
type:ObjectId,
ref:"Folder"
}
});
const File = mongoose.model("ModelFile", modelFileSchema);
module.exports = File;
文件夹架构是 file.How 的父架构,当我删除 folder.All 时,我可以从文件架构中删除数据吗?属于正在删除的文件夹的文件架构中的数据必须是也删除了。例如,我有一个名为 A 的文件夹和引用文件夹 A.When 的文件 1、2、3 我删除了文件夹 A,也必须删除文件 1、2、3。
下面是我的删除文件夹代码,它只是删除数据库中的folder.Files。
路线。
router.delete("/folder/delete/:folderId",deleteFolder);
控制器..
exports.deleteFolder = (req,res)=>{
let folderId= req.params.folderId
console.log(folderId);
Folder.findOne({_id:folderId}).then((resp)=>{
console.log(resp._id)
Folder.deleteOne({_id:folderId})
.then(()=>{
res.status(400).json( resp._id + " deleted")
})
.catch((err)=>{
console.log(err.message)
})
}).catch(()=>{
res.send("Folder doesnot exist")
})
}
你可以为此使用中间件。
Folder.pre('deleteOne', function(next) {
// Remove all the assignment docs that reference the removed person.
this.model('ModelFile').remove({ _id: this._id }, next);
});
有关详细信息,请参阅此 post:Automatically remove referencing objects on deletion in MongoDB
我有两个模式 Folder 和 modelFile,如下所示..
文件夹架构
const mongoose = require('mongoose')
const {ObjectId} = mongoose.Schema
const folderSchema = new mongoose.Schema({
title:{
type: String,
},
belongsTo:{
type:ObjectId,
ref:"Project"
}
})
module.exports = mongoose.model("Folder",folderSchema)
模型文件架构
const mongoose = require("mongoose");
const {ObjectId} = mongoose.Schema
const modelFileSchema = new mongoose.Schema({
createdAt: {
type: Date,
default: Date.now,
},
name: {
type: String,
required: [true, "Uploaded file must have a name"],
},
image:{
type:String
},
belongsTo:{
type:ObjectId,
ref:"Folder"
}
});
const File = mongoose.model("ModelFile", modelFileSchema);
module.exports = File;
文件夹架构是 file.How 的父架构,当我删除 folder.All 时,我可以从文件架构中删除数据吗?属于正在删除的文件夹的文件架构中的数据必须是也删除了。例如,我有一个名为 A 的文件夹和引用文件夹 A.When 的文件 1、2、3 我删除了文件夹 A,也必须删除文件 1、2、3。
下面是我的删除文件夹代码,它只是删除数据库中的folder.Files。
路线。
router.delete("/folder/delete/:folderId",deleteFolder);
控制器..
exports.deleteFolder = (req,res)=>{
let folderId= req.params.folderId
console.log(folderId);
Folder.findOne({_id:folderId}).then((resp)=>{
console.log(resp._id)
Folder.deleteOne({_id:folderId})
.then(()=>{
res.status(400).json( resp._id + " deleted")
})
.catch((err)=>{
console.log(err.message)
})
}).catch(()=>{
res.send("Folder doesnot exist")
})
}
你可以为此使用中间件。
Folder.pre('deleteOne', function(next) {
// Remove all the assignment docs that reference the removed person.
this.model('ModelFile').remove({ _id: this._id }, next);
});
有关详细信息,请参阅此 post:Automatically remove referencing objects on deletion in MongoDB