रिश्ते:
- एक
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
स्कीमा अद्यतन कर सकते हैं।
इस परिदृश्य में हम एक परियोजना को हटा रहे हैं और फिर 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
के माध्यम से एक ही बात प्राप्त कर सकते थे ..
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
और से project
से संबंधित कई assignments
पर। आपके Project
स्कीमा में आपके पास assignment
कॉलम होगा जहां एक प्रोजेक्ट एकाधिक असाइनमेंट से संबंधित होगा।
नोट: मिडलवेयर हटाएं मॉडल पर काम नहीं करेंगे और यह केवल आपके दस्तावेज़ों पर काम करेगा। यदि आप 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);
}
});
});
}