2017-03-27 15 views
0

I 3スキーマが定義されている:「ChangeSetSchema」の配列「ワークアイテム」内部mongoose/mongodbにデータを入力/リンクする方法は?

var ChangeSetSchema = new Schema({ 
    id: String, 
    ... 
    workitems: [{ type: mongoose.Schema.Types.ObjectId, ref:'WorkItem' }] 
}); 

var WorkItemSchema = new Schema({ 
    id: String, 
    ... 
}); 

IDS「WorkItemSchema」の「ID」と同じになります。 は、私は、たとえば、チェンジスキーマをデータを保存しなければならないのか疑問に思って:

router.route('/changeset') 

    .post(function(req, res) { 
     Changeset.find({ id: req.body.id }, function(err, changeset) { 
      if (err) { 
       res.send(err); 
      } else { 
       var changeset = new Changeset(); 
       changeset.id = req.body.id; 
       changeset.url = req.body.url; 
       changeset.author = req.body.author; 
       changeset.createddate = req.body.createddate; 
       changeset.comment = req.body.comment; 
       //changeset.workitems = req.body.workitems; 
       changeset.save(function(err) { 
        if (!err) { 
         Changeset.find({}) 
          .populate('workitems') 
          .exec(function(error, changesets) { 
           console.log(JSON.stringify(changesets, null, "\t")); 
           res.send('1'); 
          }) 
        } 
       }); 
      } 

     }); 
    }) 

私は毎回「作業項目」のオブジェクトを作成して保存する必要がありますか、私は「チェンジ」を保存したり、私は伝えることができますそれらの2つがリンクされているmongodb?私はここにExpress.js、完全なコードを使用しています

https://github.com/Trigu/ReleaseNotes/tree/master

+0

あなたはチェンジを挿入するたびに、新しい作業項目を挿入しますか?各WorkItemは1つのChangeSetにのみ属していますか? –

答えて

0
router.route('/changeset') 

    .post(function(req, res) { 
     Changeset.findOne({ id: req.body.id }, function(err, changeset) { 
      if (err) { 
       res.send(err); 
      } else { 
       //get Id before new 
       if(changeset){ 
       var changesetWorkitemsId=changeset.workitems; 
       } 

       //creating new object here 
       var changeset = new Changeset(); 
       changeset.id = req.body.id; 
       changeset.url = req.body.url; 
       changeset.author = req.body.author; 
       changeset.createddate = req.body.createddate; 
       changeset.comment = req.body.comment; 

       //set Id 
       if(changesetWorkitemsId){ 
       changeset.workitems = changesetWorkitemsId; 
       }else{ 
       changeset.workitems = req.body.workitems; 
       } 
       changeset.save(function(err) { 
        if (!err) { 
         Changeset.find({}) 
          .populate('workitems') 
          .exec(function(error, changesets) { 
           console.log(JSON.stringify(changesets, null, "\t")); 
           res.send('1'); 
          }) 
        } 
       }); 
      } 

     }); 
    }) 
関連する問題