रिश्ते:
- एक
one-to-one is a relationshipजैसे कि एक राज्य में केवल एक राजधानी शहर है और एक राजधानी शहर केवल एक राज्य की राजधानी है - एक
one-to-many is a relationshipजैसे कि एक माँ के कई बच्चे होते हैं, और बच्चों की एक ही माँ होती है - एक
many-to-many is a relationshipजैसे कि एक किताब कई लेखकों या सह-लेखकों द्वारा लिखी जा सकती है, जबकि एक लेखक कई किताबें लिख सकता है।
एक-एक संबंध - यदि कोई Project/Group हटा दिया गया है, मैं अपना 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 हटा दिया गया है, मैं अपना Assignment कैसे अपडेट कर सकता हूं? स्कीमा.
इस परिदृश्य में हम एक प्रोजेक्ट को हटा रहे हैं और फिर सभी Assignment . ढूंढ रहे हैं जो इस 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 . के माध्यम से एक ही चीज़ हासिल कर सकते हैं जैसा कि जॉनी ने बताया, उस पर बस एक सुधार ..
ProjectSchema.pre('remove', function (next) {
var project = this;
project.model('Assignment').update(
{ projects: {$in: project.assignments}},
{ $pull: { project: project._id } },
{ multi: true },
next
);
});
आमतौर पर कई project हो सकते हैं एक Assignment . से संबंधित है और कई Assignment एक ही project . से संबंधित . आपके पास एक Assignment होगा आपके project . में कॉलम स्कीमा जहां एक प्रोजेक्ट कई असाइनमेंट से संबंधित होगा।
नोट: मिडलवेयर निकालें मॉडल पर काम नहीं करेगा और यह केवल आपके दस्तावेज़ों पर काम करेगा। यदि आप remove . के साथ जा रहे हैं मिडलवेयर आपके डिलीट फंक्शन में सुनिश्चित करता है, आपको project . मिलता है पहले आईडी द्वारा और फिर लौटाए गए document . पर हटाने का तरीका लागू करें, ताकि उपरोक्त काम करे... आपका डिलीट फंक्शन इस तरह दिखेगा।
delete: function(req, res) {
return Project.findById(req.params.id, function(err, project){
return project.remove(function(err){
if(!err) {
console.log(numberAffected);
}
});
});
}