2016-05-17 17 views
0

私はこのようになりますAdminGroupOperationモデルがあります:mongodbで文書の配列を更新するには?

var Operation = new mongoose.Schema({ 
    name : String, 
    value: Boolean, 


    recycled: Number 
}); 

どのように私はAdminGroupOperationsモデルでの操作列を更新することができます。このようになります

var AdminGroupOperation = new mongoose.Schema({ 
    module : String, 
    adminGroup: {type: mongoose.Schema.Types.ObjectId, ref: 'AdminGroup'}, 
    operations: [{type: mongoose.Schema.Types.ObjectId, ref: 'Operation'}], 

    recycled: Number 
}); 

と私の動作モデルを?私のAPIでは、私はこのような何かが、この文句を言わない仕事を持っている...

exports.update = function (req, res, next) { 
    var data = req.body; 

    AdminGroupOperation.findByIdAndUpdate({"_id": req.params.id}, { 
      module : data.module, 
      adminGroup: data.adminGroup._id, 
      operations: data.$.operations_id 
     }, 
     {new: true}, 

     function (err, secoperation) { 
      if (err) { 
       return next(err); 
      } 
      secoperation.save(function (err) { 
       if (err) { 
        return next(err); 
       } 
      }); 

      res.json({'status': 'updated', 'ID': req.params.id}); 
     }) 
}; 

答えて

0

あなたが要求することなく、IDを使用する必要があり、私は意味:

AdminGroupOperation.findByIdAndUpdate req.params.id, { $set:{ 
     module : data.module, 
     adminGroup: data.adminGroup._id, 
     operations: data.$.operations_id 
    }}, {new: true}, 

    function (err, secoperation) { 
     if (err) { 
      return next(err); 
     } 
     secoperation.save(function (err) { 
      if (err) { 
       return next(err); 
      } 
     }); 

     res.json({'status': 'updated', 'ID': req.params.id}); 
    }) 
    }; 

私はオプションのために確認していない:{新しいです: }真、またはあなたは、単にID

+0

を見つけるために、要求を使用してアップデートを使用することができますので、私のクエリは、今のようになります。 'AdminGroupOperation.findByIdAndUpdate(data._id、 { 「$セット」:{ 「モジュール」 :data.module、 "adminGroup":data.adminGroup._id、 "操作。$":data.operations } } ' しかし、これはうまく動作しません。 – tadija

+0

更新要求を試す[link] http://mongoosejs.com/docs/2.7。 x/docs/updating-documents.html – chou

+0

私はまだそれを動作させることはできませんでした。これまでのコードは 'AdminGroupOperation.findOne({'_ id':req.body._id}) .populate( '操作') .exec(function(err、record){ for(var i = 0; i tadija

関連する問題