关系:
- 一个
one-to-one is a relationship
这样的状态只有一个省会城市和省会城市只有一个州的首府 - 一个
one-to-many is a relationship
使得母亲有许多孩子,和孩子只有一个妈妈 - 一个
many-to-many is a relationship
这样的一本书可以由几个作者或合着者写的,而一个作者可以写几本书。
一对一关系- 如果Project/Group
删除了a ,如何更新我的Assignment
架构。
通常,您将一个
project映射到一个,
assignment并且类似地将一个
assignment映射到一个
project。您可以在此处执行的 *** 作是删除项目,然后
project在分配模型中找到关联的对象并删除其引用。
delete: function(req, res) { return Project.findById(req.params.id, function(err, project){ return project.remove(function(err){ if(!err) { Assignment.update({_id: project.assignment}}, {$pull: {projects: project._id}}, function (err, numberAffected) { console.log(numberAffected);} else { console.log(err); } }); }); });}
一对多关系- 如果Project/Group
删除了a ,如何更新我的Assignment
架构。
在这种情况下,我们将删除一个项目,然后查找所有
assignments属于该项目的项目,并从中
project删除其引用。在这种情况下,单个项目可能会有很多分配。
delete: function(req, res) { return Project.findById(req.params.id, function(err, project){ return project.remove(function(err){ if(!err) { Assignment.update({_id: {$in: project.assingments}}, {$pull: {project: project._id}}, function (err, numberAffected) { console.log(numberAffected);} else { console.log(err); } }); }); });}
删除中间件
您可以
middleware通过Johnny指出的方法实现相同的目的,只是对此进行了更正。
ProjectSchema.pre('remove', function (next) { var project = this; project.model('Assignment').update( { projects: {$in: project.assignments}}, { $pull: { project: project._id } }, { multi: true }, next );});
通常情况下,可能有许多
projects属于,
assignment而许多
assignments属于同一
project。模式中将有一个
assignment列,
Project其中一个项目将与多个分配相关。
注意:
删除中间件将不适用于模型,而仅适用于您的文档。如果要使用
remove中间件,请确保在delete函数中
project先找到id,然后在返回的值上
document应用remove方法,以便上面的方法起作用…
delete函数将如下所示。
delete: function(req, res) { return Project.findById(req.params.id, function(err, project){ return project.remove(function(err){ if(!err) { console.log(numberAffected); } }); }); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)