2017-05-16 5 views
0

jadeビューページのdeleteボタンをクリックすると、1つの配列要素を削除しようとしています。mongooseを持つNode.jsは1つの配列要素を削除します

クリックすると、選択されたインストラクターがreq.bodyとして送信されます。

サーバー側では、インストラクタのobjectIdを含むコースが見つかります。

私のための任意のアイデアですか?

ありがとうございます。ここ

は私のコードです:

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'); 
      }); 
     }); 

スキーマCLISTとのIList:MongoDBのための

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" 
    }] 
}); 

一例:

{ 
    "_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 
} 

私はコースでインストラクターオブジェクトIDを追加します。

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

あなたは「CLIST」モデルとなり何のためのスキーマを投稿することができますか? – Paul

+0

@Paul投稿を更新しました。 –

+0

なぜあなたはそこにループを使用していますか?ラブKESH @ –

答えて

1

複数を見つけて更新するために使用するのと同じ操作

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

成功{[OK]を持っていますので、:1、 nModified:0、 N:2、 OPTIME: {TS:タイムスタンプ{_bsontype: 'タイムスタンプ'、low_:3、高校:1494912734}、 t:1}、 electionId:7fffffff0000000000000001} –

+0

でも、選択したコース内のインストラクターID .. –

+0

ありがとうございました。やってみます! –

関連する問題