Beziehungen:
- Ein
one-to-one is a relationshipso dass ein Staat nur eine Hauptstadt hat und eine Hauptstadt nur die Hauptstadt eines Staates ist - Ein
one-to-many is a relationshipso dass eine Mutter viele Kinder hat und die Kinder nur eine Mutter haben - Eine
many-to-many is a relationshipso dass ein Buch von mehreren Autoren oder Co-Autoren geschrieben werden kann, während ein Autor mehrere Bücher schreiben kann.
Eins-zu-Eins-Beziehung – Bei einem Project/Group entfernt wurde, wie kann ich meine Assignment aktualisieren Schema.
Normalerweise haben Sie ein project einer assignment zugeordnet und ebenso eine assignment einem project zugeordnet . Was Sie hier tun können, ist ein Projekt zu entfernen und dann das zugehörige project zu finden im Zuweisungsmodell und entfernen Sie ihre Referenzen.
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);
}
});
});
});
}
Eine-Viele-Beziehung - Wenn ein Project/Group entfernt wurde, wie kann ich meine Assignment aktualisieren Schema.
In diesem Szenario entfernen wir ein Projekt und finden dann alle assignments die zu diesem project gehört und Entfernen seiner Referenz von ihnen. Hier ist die Situation, dass es viele Aufgaben für ein einzelnes Projekt geben kann.
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 entfernen
Das Gleiche könnten Sie auch über middleware erreichen wie von Johnny darauf hingewiesen, nur eine Korrektur dazu..
ProjectSchema.pre('remove', function (next) {
var project = this;
project.model('Assignment').update(
{ projects: {$in: project.assignments}},
{ $pull: { project: project._id } },
{ multi: true },
next
);
});
Typischerweise kann es viele projects geben Zugehörigkeit zu einer assignment und viele assignments die zum selben project gehören . Sie erhalten eine Assignment Spalte in Ihrem project Schema, bei dem sich ein Projekt auf mehrere Aufgaben bezieht.
Hinweis: Remove Middleware funktioniert nicht bei Modellen und es würde nur bei Ihren Dokumenten funktionieren. Wenn Sie mit remove gehen Middleware stellen Sie sicher, dass Sie in Ihrer Löschfunktion project finden zuerst nach ID und dann auf dem zurückgegebenen document wenden Sie die Methode remove an, damit das obige funktioniert... würde Ihre Löschfunktion so aussehen.
delete: function(req, res) {
return Project.findById(req.params.id, function(err, project){
return project.remove(function(err){
if(!err) {
console.log(numberAffected);
}
});
});
}