2013-08-28 5 views
2

CouchDB는 javascript를 사용하여 유효성을 검사하고, 쿼리하고, map-reduce를 수행합니다. 나는이 JavaScript 함수에 node.js 라이브러리를 사용할 수있는 방법이 있는지 알고 싶습니다. require('http') 또는 일부 제 3 자 모듈을 npm과 함께 설치하여 사용하십시오.Node.js 라이브러리와 함께 CouchDB 사용

감사합니다.

답변

0

아니요, CouchDb 내부의 노드 모듈에서 외부 JavaScript를 사용할 방법이 없습니다. 제한된 공유를 할 수 있습니다. http://wiki.apache.org/couchdb/HTTP_view_API#Sharing_Code_Between_Views

노드는 Javascript 언어 바인딩에 노출 된 플랫폼이므로 노드의 "장점"이 실행 환경에 있습니다.

파이썬을 사용하여 뷰를 작성하는 방법이 있지만 노드와 비슷한 점은 전혀 알지 못합니다.

+1

CouchDB는 현재 Mozilla의 SpiderMonkey JS 엔진을 사용하여 실행하고 있음을 지적 할 가치가 있습니다. 그러나 CouchDB 메일 링리스트에서 CouchDB 내 NPM 모듈 사용을 허용하는 Node.js로이를 대체하는 것에 대해 논의되었습니다. (그러나 그것은 먼 길이다.) –

+0

나는 [CouchJS] (https://github.com/iriscouch/couchjs)를 발견했다. –

+0

재미있는 찾기. 프로덕션 용도로 사용 하시겠습니까? 아니, 나는 그것을 사용하지 않을 것이다. 또한 노드가 단일 스레드이므로 모든 것을 단일 경로로 깔끔하게 정리할 수 있습니다. – WiredPrairie

1

http과 같은 Node.js 관련 라이브러리가 필요하지 않는 한 Node.js 라이브러리를 사용할 수 있습니다. 예를 들어 async은 CouchDB에서 작동합니다. 엄지 손가락의 규칙 : 클라이언트가 인 서버를 사용하려는 경우 좋을 것입니다.

패턴 사이에 코드를 공유하려면 CommonJS의 module.exportsexports[something] 패턴을 사용할 수 있습니다. 자세한 내용은 the documentation을 확인하십시오.

예를 들어,이보기를 고려하십시오

{ 
    _id:"_design/test", 
    views: { 
    lib: { 
     test: "exports.guests = 42;" 
    }, 
    fish_per_person: { 
     map: function(doc){ 
     var guests = require('views/lib/test').guests; // 42 
     emit(doc.number_of_fish, doc.number_of_fish/guests); 
     } 
    } 
    } 
} 

fish_per_person보기 lib/test에서 내 보낸 값 guests이 필요합니다.

+0

감사합니다. 그러나 나는이 도서관이 필요할 것이라고 생각한다. –

+0

어떤 라이브러리가 있습니까? 무엇을 성취하려고합니까? 이것은 도전처럼 들리며 저는 매우 흥미 롭습니다. – garbados

+0

지금 성취 할 구체적인 일은 없습니다. 그러나 나는 어떤 것을 상상할 수있다. 예를 들어, [온라인 판단 시스템] (http://en.wikipedia.org/wiki/Online_judge)에서 코드를 제출 한 후'child_process'를 사용하여 CouchDB에서 컴파일하고 실행해야합니다. 업데이트 처리기. –