2016-07-11 3 views
0

Postgresバックエンドでexpress.Router()を使用すると、put/postを書くときに、それぞれのdbフィールドを別々に入力するのは面倒です。例えば:RESTのput/postの呼び出しを簡略化する

router.route( '/クマ/:bear_id') に.get(関数(REQ、RES){ ...})は

.put(function(req, res) { 
    Bear.findById(req.params.bear_id, function(err, bear) { 
     if (err) 
      res.send(err); 
     bear.name = req.body.name; 
     bear.field1 = req.body.field1; 
     bear.field2 = req.body.field2; 
     bear.field3 = req.body.field3; 
     bear.field4 = req.body.field4; 
     bear.moreFields = req.body.moreFields; 
     etc. 

     bear.save(function(err) { 
      if (err) 
       res.send(err); 
      res.json({ message: 'Bear updated!' }); 
     }); 
    }); 
}); 

- - がありますJSONキーの値とdbフィールドの名前が同じであると仮定して、自動的にすべてのオブジェクト名を適切なreq.body名に広めることができるJSツールまたはパターン?

私はORMを使いたくありません。

ありがとうございます!

答えて

0

POSTについて動詞がちょうどメソッドを作成するために身体を追加します。

Bear.create(req.body).then(function() { 
     //... 
    }); 

PUT動詞の場合、あなたはいつものように、データベース内の文書を検索し、ループ内でそれを更新する必要が

Bear.findById(req.params.bear_id, function(err, bear) { 
    for (let elem in req.body) { 
     bear[elem] = req.body[elem]; 
    } 

    bear.save((err, bear)=> { 
     if (err) { 
      return next(err); 
     } else { 
      res.json({ message: 'Bear updated!' }); 
     } 
    }); 
}); 

パッケージのbody-parserをインストールする必要があります。

+0

ありがとうございました。私はバックエンドとしてモンゴーを使っていないとは言いませんでした。 Postgresを使う。私の質問を更新しました。 – CCPony

+0

私の更新された回答を確認してください。 –