2016-07-11 4 views
0

Использование express.Router() с backgend Postgres, при написании put/post может быть довольно трудоемким, чтобы вводить каждое поле db отдельно. Например:Упростить REST put/post calls

router.route ('/ медведи /: bear_id') .get (функция (Req, Рез) { ... })

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

Так что - - есть шаблон или инструмент JS, который может автоматически распространять все имена объектов на правильное имя req.body, предполагая, что значения ключа JSON и имя поля db совпадают?

Я не хочу использовать ОРМ.

Спасибо!

ответ

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

Пожалуйста, уточните мой обновленный ответ. –