【问题标题】:(MONGODB) How to remove referenced data when parent collection is deleted(MONGODB) 删除父集合时如何删除引用的数据
【发布时间】:2023-03-06 00:00:02
【问题描述】:

我有两个模式文件夹和模型文件如下..

文件夹架构

 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; 

文件夹架构是文件的父架构。删除文件夹时如何从文件架构中删除数据。文件架构中属于正在删除的文件夹的所有数据也必须删除。例如,我有名为 A 的文件夹和引用文件夹 A 的文件 1、2、3。当我删除文件夹 A 时,文件 1、2、3 也必须删除。

下面是我的删除文件夹代码,只是删除文件夹。文件保留在数据库中。

路线。

 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")
})

}

【问题讨论】:

    标签: node.js mongodb mongoose nosql


    【解决方案1】:

    您可以为此使用中间件。

    Folder.pre('deleteOne', function(next) {
        // Remove all the assignment docs that reference the removed person.
        this.model('ModelFile').remove({ _id: this._id }, next);
    });
    

    更多信息请参考这篇文章:Automatically remove referencing objects on deletion in MongoDB

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      相关资源
      最近更新 更多