2017-03-09 1 views
1

CouchDB에서 문서 업데이트 처리기 내에서 문서를 쿼리 (GET) 할 수 있습니까?문서 업데이트 처리기 내에서 문서 가져 오기

제 3 자 (CognitoForms)의 POST를 허용하기 위해 CouchDB 2.0에 간단한 문서 업데이트 처리기를 작성했습니다. 이것은 잘 작동하고, 나는 JSON 페이로드에서 ID를 가져 와서 doc _id로 사용한다.

그런 다음 CognitoForms에서 'update'URI를 지정할 수 있으므로 새로운 업데이트 처리기를 만들거나 동일한 업데이트 핸들러를 사용할 수 있습니다. 그러나 CognitoForms에 :

  • 을 업데이트는 POST보다는 PUT는 않는 쿼리를 보낼 수있는 방법이있을 나타나지 않습니다
  • 가 필요로하는 문서의 ID로

매개 변수 업데이트 될 문서가 있으면 문서를 데이터베이스에 쿼리하고 _rev를 가져오고 _id 및 _rev와 함께 페이로드를 반환하여 업데이트를 수행 할 수 있습니다. 그러나 업데이트 처리기에서 이러한 쿼리를 수행 할 수 있는지 여부는 알 수 없습니다. 나는 명백한 무엇인가를 놓치고있는 것처럼 느낀다, 또는, 내가 그것을하는 것을 허락받지 않을 것 인 매우 좋은 이유가있다. 매우

감사

편집 : 나는 내가 CouchDB를에 전달하기 전에 요청을 구문 분석 할 수있는 작은 응용 프로그램을 만들 수 이해 추가해야합니다,하지만 난 단지에 CouchDB를이 구현할 수 있는지 관심 내가 다른 층없이 얼마나 멀리 얻을 수 있는지 이해하십시오!

답변

1

특별한 경우에는이를 수행하기가 어렵습니다. 문서 업데이트 처리기는 기본적으로 필요한 데이터를 가져 와서 응답을 반환하는 순수한 함수이지만 데이터베이스에 연결할 수있는 방법은 없습니다.

url에 doc id를 추가하면 update 함수는 데이터베이스에서 doc로 매개 변수를 가져옵니다. 자세한 내용은 the CouchDB docs for update functions을 참조하십시오.

가능한 해결책은 CouchDB에서 다시 작성하여 본문에서 ID를 추출하는 것입니다. CouchDB 2.0에서는 rewrites as functions has been introduced의 새로운 길을 제시합니다.

한계를 밀어 넣으려면 재 작성 기능을 사용하면 재미있을 것 같습니다. 그러나 프로덕션 유스 케이스의 경우, 시체를 파싱하는 작은 node.js 앱을 만드는 것이 더 쉽고 유지 관리가 쉽습니다.

+0

대단히 감사합니다. 정말 고마워요. 어떻게 든 나를 통과 시켰기 때문에 재 작성 기능에 대해 정말 잘 알고 있습니다. 나는 그것이 프로덕션 사용을위한 최선의 선택이 아니지만 확실히 볼 흥미로운 것에 동의한다. – gtek