Beziehungen:
- Ein
one-to-one is a relationship
so dass ein Staat nur eine Hauptstadt hat und eine Hauptstadt nur die Hauptstadt eines Staates ist - Ein
one-to-many is a relationship
so dass eine Mutter viele Kinder hat und die Kinder nur eine Mutter haben - Eine
many-to-many is a relationship
so 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);
}
});
});
}