2017-05-16 4 views
0

Ich versuche, ein Array-Element zu löschen, wenn ich auf die Schaltfläche Löschen auf der Jade-Ansicht klicken.Node.js mit Mungo löschen ein Array-Element

Wenn Sie darauf klicken, wird der ausgewählte Instructor als angeforderter Body gesendet.

Auf serverseite findet es Kurse, die den Lehrer ObjektID enthalten.

Irgendeine Idee für mich?

Vielen Dank für das Lesen.

hier ist mein Code:

var id = req.body._id; 
clist.find({ instructors: { $in: [id] } }).exec(function (err, result) { 
      result.forEach(function (obj) { 
       clist.update(
        { _id: new mongoose.Types.ObjectId(obj._id)}, 
        { $pull: { instructors : [new mongoose.Types.ObjectId(id)] } } 
       ); 
       console.log(new mongoose.Types.ObjectId(obj._id) + ' was deleted'); 
      }); 
     }); 

Schema Clist und IList:

var instructorlist = mongoose.Schema({ 
    name: { type: String, required: true }, 
    age: { type: Number, required: true }, 
    gender: { type: String, required: true }, 
    DOB: { type: Date, required: true, default: Date.now }, 
    email: { type: String, required: true }, 
    phone: { type: Number, required: true }, 
    address: { type: String, required: true }, 
    dateofstart: { type: Date, required: true}, 
    courses: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: "clist" 
    }] 
}); 
var courselist = mongoose.Schema({ 
    coursename: { type: String, required: true }, 
    coursenumber: { type: String, required: true }, 
    coursecredit: { type: Number, required: true }, 
    courseroom: { type: String, required: false }, 
    courseregisteddate: {type: Date, default: Date.now}, 
    students: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: "slist" 
    }], 
    instructors: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: "ilist" 
    }] 
}); 

ein Beispiel für mongodb:

{ 
    "_id": { 
     "$oid": "591a7a3b391a1842e8a69e23" 
    }, 
    "coursename": "JDKD", 
    "coursenumber": "COMP4483", 
    "coursecredit": 4, 
    "courseroom": "sdaf", 
    "instructors": [ 
     { 
      "$oid": "591a374422a3a13d38c0bbe5" 
     } 
    ], 
    "students": [], 
    "courseregisteddate": { 
     "$date": "2017-05-16T04:04:11.848Z" 
    }, 
    "__v": 0 
} 

Als ich Lehrer objectID in Course hinzufügen.

var newcourse = new clist({ 
        'coursename': req.body.coursename, 'coursenumber': req.body.coursenumber, 'coursecredit': req.body.coursecredit 
        , 'courseroom': req.body.room, 'instructors': instructors._id 
       });  
+0

Können Sie nach dem Schema für was auch immer wird das 'clist' Modell? – Paul

+0

@Paul Ich habe meinen Beitrag aktualisiert. –

+0

Warum verwenden Sie Schleife dort? –

Antwort

1

Verwendung derselben Operation zu finden und zu aktualisieren mehrere

clist.update(
    { instructors: { $in: [id] }}, 
    { $pull: { instructors : { _id : new mongoose.Types.ObjectId(id) } } }, //or{ $pull: { instructors: mongoose.Types.ObjectId(id) } } 
    { 
    multi:true 
}, 
function(error, success){ 
    if(error){ 
    console.log("error",error) 

} 
console.log("success",success) 

}); 
+0

Erfolg haben {ok: 1, nModified: 0, n: 2, OPTIME: {ts: Timestamp {_bsontype: 'Timestamp', low_: 3, high_: 1494912734}, t: 1}, wahlId: 7fffffff0000000000000001} –

+0

aber immer noch Ausbilder ID innerhalb der ausgewählten Kurs .. –

+0

Vielen Dank. Ich werde es versuchen! –

Verwandte Themen