2016-07-11 3 views
0

Postgres 백엔드에서 express.Router()를 사용하면 put/post를 작성할 때 각 db 필드를 별도로 입력하는 것이 매우 힘들 수 있습니다.REST put/post 콜을 간단하게 함

router.route 예를 들어 ('/ 곰/: bear_id') 갔지 (기능 (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!' }); 
     }); 
    }); 
}); 

그래서 - - 거기에있다 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!' }); 
     } 
    }); 
}); 

패키지 본문 파서가 설치되어 있어야합니다.

+0

감사합니다. 나는 몽고를 나의 백 엔드로 사용하지 않는다고 언급하지 않았다. Postgres 사용하기. 내 질문을 업데이트했습니다. – CCPony

+0

업데이트 된 답변을 확인하십시오. –

관련 문제