javascript - 如何删除 Mongoose 模式中的引用值

标签 javascript node.js mongodb mongoose

const UniversitySchema = new Schema({
	university_name: {
		type:String,
		
	},
	status: {
		type: String
	}

});

const CollageSchema = new Schema({
	collage_name: {
		type:String,
		required: [true,'Name field is required']
	},
	university_id: {
		type: [{ type: Schema.Types.ObjectId ,
		ref: 'university' }]

	},
	type: {
		type:String
	}

});

router.delete('/university/:id',function(req,res,next){
	University.findByIdAndRemove({_id:req.params.id}).then(function(detail){
		res.send(detail);
	});
});

我在 CollageSchema 中引用了 UniversitySchema_id,如果我删除任何大学,相应的拼贴画也应该被删除。这个怎么做?

最佳答案

通过对 collages 集合的额外 mongo 调用,使用 Promise.all() :

router.delete('/university/:id',function(req,res,next){

    const ObjectId = require('mongodb').ObjectId;
    const _id = ObjectId(req.params.id);

    const removeUniversity = University.findByIdAndRemove({ _id: _id });
    const removeCollage    = Collage.remove({ university_id: _id });

    Promise
        .all([removeUniversity, removeCollage])
        .then(function(values) {
            const detail = values[0];
            res.send(detail);  
        })
        .catch((err) => console.error(err));

});

关于javascript - 如何删除 Mongoose 模式中的引用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46542337/

相关文章:

javascript - Chart.js 错误 : TypeError: t is undefined

node.js - 如何在代理请求时在 ExpressJS 中添加/删除响应 header

javascript - 在 JavaScript 中比较 ObjectID 的更大/更小

javascript - Angular ng-repeat 有效...但没有绑定(bind)/显示任何值(Twig)

具有 2 个变量的 Javascript 计算

javascript - 如何使用react和react-apollo从graphql服务器获取数据?

node.js - createReadStream 的 TypeScript 定义不接受选项中的 {start : 90, end: 99 }

node.js - 如何用 Jest 模拟 express.Application?

mongodb - C# MongoDB 驱动程序 - 如何使用 UpdateDefinitionBuilder?

javascript - 通过 mongo 聚合管道使用 $match 两次