रिश्ते:
- एक
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);
}
});
});
}