Relationer:
- En
en-til-en er en relationsådan at en stat kun har én hovedstad og en hovedstad kun er hovedstaden i én stat - En
en-til-mange er en relationsådan at en mor har mange børn, og børnene kun har én mor - En
mange-til-mange er en relationsådan at en bog kan skrives af flere forfattere eller medforfattere, mens en forfatter kan skrive flere bøger.
én-en-relation - Hvis et Projekt/Gruppe er fjernet, hvordan kan jeg opdatere min Tildeling Skema.
Typisk vil du have ét projekt knyttet til én opgave og tilsvarende én opgave knyttet til ét projekt . hvad du kan gøre her er at fjerne et projekt og derefter finde det tilhørende projekt i opgavemodel og fjern deres referencer.
slet: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); } }); }); });}
et-mange forhold - Hvis et Projekt/Gruppe er fjernet, hvordan kan jeg opdatere min Tildeling Skema.
I dette scenarie fjerner vi et projekt og finder derefter alle tildelinger som hører til dette projekt og fjerne dens reference fra dem. Her er situationen, der kan være mange opgaver til et enkelt projekt.
slet: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( fejl); } }); }); });} Fjern middleware
Du kan opnå det samme via middleware som påpeget af Johnny, lige en rettelse på det..
ProjectSchema.pre('remove', function (next) { var project =this; project.model('Assignment').update( { projects:{$in:project.assignments}}, { $ pull:{ project:project._id } }, { multi:true }, next );});
Typisk kan der være mange projekter tilhørende en opgave og mange opgaver tilhørende det samme projekt . Du vil have en opgave kolonne i dit Projekt Skema, hvor ét projekt vil relatere til flere opgaver.
Bemærk: fjern middleware virker ikke på modeller, og det virker kun på dine dokumenter. Hvis du går med fjern middleware sikre i din slettefunktion, finder du project med id først og derefter på det returnerede dokument anvend fjernmetoden, så for at ovenstående virker... vil din slettefunktion se sådan ud.
slet:function(req, res) { return Project.findById(req.params.id, function(err, project){ return project.remove(function(err){ if(!err) { console .log(nummerpåvirket); } }); }); }