Hubungan:
- Sebuah
one-to-one is a relationship
sedemikian rupa sehingga negara bagian hanya memiliki satu ibu kota dan ibu kota adalah ibu kota hanya satu negara bagian - A
one-to-many is a relationship
sehingga seorang ibu memiliki banyak anak, dan anak-anak hanya memiliki satu ibu - A
many-to-many is a relationship
sedemikian rupa sehingga sebuah buku dapat ditulis oleh beberapa penulis atau rekan penulis, sedangkan seorang penulis dapat menulis beberapa buku.
hubungan satu-satu - Jika Project/Group
dihapus, bagaimana saya bisa memperbarui Assignment
saya Skema.
Biasanya Anda akan memiliki satu project
dipetakan ke satu assignment
dan juga satu assignment
dipetakan ke satu project
. apa yang dapat Anda lakukan di sini adalah menghapus sebuah proyek dan kemudian menemukan project
yang terkait dalam model penugasan dan hapus referensinya.
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);
}
});
});
});
}
hubungan satu-banyak - Jika Project/Group
dihapus, bagaimana saya bisa memperbarui Assignment
saya Skema.
Dalam skenario ini kami menghapus proyek dan kemudian menemukan semua assignment
yang termasuk dalam project
ini dan menghapus referensinya dari mereka. Di sini situasinya, mungkin ada banyak tugas untuk satu proyek.
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);
}
});
});
});
}
Hapus middleware
Anda dapat mencapai hal yang sama melalui middleware
seperti yang ditunjukkan oleh Johnny, hanya koreksi itu..
ProjectSchema.pre('remove', function (next) {
var project = this;
project.model('Assignment').update(
{ projects: {$in: project.assignments}},
{ $pull: { project: project._id } },
{ multi: true },
next
);
});
Biasanya ada banyak project
milik assignment
dan banyak assignment
milik project
yang sama . Anda akan memiliki assignment
kolom di Project
. Anda Skema di mana satu proyek akan berhubungan dengan beberapa tugas.
Catatan: hapus middleware tidak akan berfungsi pada model dan itu hanya akan berfungsi pada dokumen Anda. Jika Anda menggunakan remove
middleware memastikan dalam fungsi hapus Anda, Anda menemukan project
dengan id terlebih dahulu dan kemudian pada document
yang dikembalikan terapkan metode hapus, jadi agar cara di atas berfungsi... fungsi hapus Anda akan terlihat seperti ini.
delete: function(req, res) {
return Project.findById(req.params.id, function(err, project){
return project.remove(function(err){
if(!err) {
console.log(numberAffected);
}
});
});
}