2017-06-30 6 views
0

私はExpressとSequelize JSで簡単なAPIを構築しています。 req.Schoolでレコードを更新しようとしましたが、何も起こりません。私は以下のコードを共有しました。また、私は出力のためのエラーを得た。手伝って頂けますか ? paramsは方法のでSequelize JSでモデルを更新する

コントローラJS

module.exports.params = function(req, res, next, id) { 
School.find({ 
      where: { 
      id: id 
      } 
     }) 
     .then(function(school) { 
      if (!school) { 
      next(new Error("School not found by given ID")); 
      }else { 
      req.School = school; 
      next(); 
      } 
     }, function(err) { 
      next(err); 
     }); 
    }; 
module.exports.delete = function (req,res,next) { 
    req.School.Status = SysEnums.Deleted; 
     School.update(req.School,{ 
     where:{ 
      id:req.School.id 
     } 
     }).then(function (deleted) { 
     res.json(deleted); 
     }); 
    }; 

ルートJS

var router = require("express").Router(); 
var controller = require("../Controllers/SchoolController"); 

router.param("id",controller.params); 

router.route("/").get(controller.get); 

router.route("/:id").get(controller.getOne).delete(controller.delete); 

module.exports = router; 
+0

提出されたデータを、req.schoolの代わりに第1のパラメータとしてupdate関数で 'req.body'に使用してみませんか? – Webinion

+0

あなたは 'req.school'にDBに保存されているデータを保存しているので、古いデータだけを提供するようです。 – Webinion

+0

ルータJsでは、ユーザがクエリ文字列でIDを送信すると、まずparamがヒットし、paramはそのIDを持つレコードがreq.Schoolに関連付けられていることを検出します。その後、Deleteキーを押します。削除するには、削除するステータスを変更してから更新してください。しかし、動作しませんでした。 @PandhiBhaumik –

答えて

0

、req.Schoolはsequelizeオブジェクトです。ここにparamsメソッドがあります。

module.exports.params = function(req, res, next, id) { 

    School.find({ 
     where: { 
     id: id 
     } 
    }) 
    .then(function(school) { 
     if (!school) { 
     next(new Error("School not found by given ID")); 
     }else { 
     req.School = school; 
     next(); 
     } 
    }, function(err) { 
     next(err); 
    }); 
}; 

@Shivamは続行オブジェクトだと言って、私は提供された方法を使用することができました。私は自分のレコードをソフトで削除したいので、ここでSequelize JSのdeleteメソッドがあります。

module.exports.delete = function(req, res, next) { 

    try { 
    req.School.Status = SysEnums.Deleted; 
    req.School.save().then(function(entity) { 
     res.json(entity); 
    }); 
    } catch (e) { 
    console.log(e); 
    } 
}; 

@PandhiBhaumik

はあなたの助けをいただき、ありがとうございます。私は2番目のオプションとしてビルドメソッドを使用しようとします。

関連する問題