मेरी नेवला स्कीमा में से एक में कई संदर्भ के लिए कई निकाला जा रहा है कई रिश्ते के लिए कई है सरणी?नेवला
GroupSchema.pre('remove', function(next){
//Remove group._id from all the users
})
मेरी नेवला स्कीमा में से एक में कई संदर्भ के लिए कई निकाला जा रहा है कई रिश्ते के लिए कई है सरणी?नेवला
GroupSchema.pre('remove', function(next){
//Remove group._id from all the users
})
आप इस के लिए 'remove'
मिडलवेयर उपयोग करने के लिए सही रास्ते पर हैं। मिडलवेयर फ़ंक्शन में, this
समूह उदाहरण हटा दिया जा रहा है और आप अन्य मॉडलों को model
विधि के माध्यम से एक्सेस कर सकते हैं।
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
या आप ऐसे मामलों में जहां अपने समूह उदाहरण में users
क्षेत्र पूर्ण न हो समर्थन करना चाहते हैं यदि आप कर सकता है:: तो आप कुछ की तरह कर सकते हैं
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
लेकिन WiredPrairie नोटों के रूप में, के लिए अच्छा विकल्प के लिए आप इस विकल्प को groups
पर एक इंडेक्स चाहते हैं।
मैं इसे हल करने के लिए मोंगोज़-रिलेशनशिप "प्लगइन" के अपने पैच किए गए संस्करण का उपयोग करता हूं: https://github.com/begrossi/mongoose-relationship/tree/remove-from-parent-if-removed-from-child-set पर एक नज़र डालें।
ब्रूनो ग्रॉसी
और अगर 'groups' अनुक्रमित नहीं है, आप एक पूर्ण तालिका स्कैन और उपयोगकर्ताओं की सरणी स्कैन के लिए मजबूर करेंगे। – WiredPrairie
@WiredPrairie इसके आसपास एक तरीका है यदि दोगुनी-जुड़े संदर्भ विश्वसनीय हैं। मैंने कहा कि एक बेहतर विकल्प के रूप में। – JohnnyHK
हाँ, यह एक सुधार है और बेहतर काम करना चाहिए। – WiredPrairie