2013-02-16 2 views
1

개발을 위해 couchDB라는 디렉토리에있는 다른 개발 코드와 함께 couchDB 디자인 문서를 별도의 파일로 구성하는 다양한 구성 요소 (views, lists, shows)를 유지하고 싶습니다. 변경 사항이 만족 스럽다면 couchapp.push를 사용하여 데이터베이스에 보내고 디자인 도큐멘트 구성 요소 파일을 버전 제어 할 수 있습니다.couchDB designDoc 개발 워크 플로 및 버전 관리

노드 모듈 'couchapp'과 노드를 사용하여 .js 파일에 대한 디렉토리와 서브 디렉토리를 스캔 한 다음 디자인 문서를 작성하고 couchDB에 업로드하는 방법을 생각해 봅니다. 아마도 하위 DIRS 너무 같은 구조 :

designDocsJs 
    |-- views 
    |  |--view1.js 
    |  |--view2.js 
    |-- shows 
    |-- lists 

이 같은 파일의 예에서지도를 넣어 줄일 수있다. 'view1.js' 또는 별도의 파일 'view1-map.js''view1-reduce.js'에 있어야합니까?

Curretnly 나는 다음을 사용하고 있지만 노드를 사용하여 .js 파일을 읽고 동적으로 ddoc.views {}에 추가하는 방법을 모르겠다. 특히 자바 스크립트/노드 솔루션을 사용하면 모든 안내가 도움이 될 것입니다.

var couchapp = require('couchapp') 
    , path = require('path'); 

    ddoc = { 
     _id: '_design/entitiesNew' 
    , views: {} 
    , lists: {} 
    , shows: {} 
    } 

    // node module exports 
    module.exports = ddoc; 

    // REPLACE ME WITH SOME WAY OF READING A 
    // STRUCTURED DIR OF .JS FILES AND COMBINING 
    // AS NECESSARY 
    ddoc.views.byType = { 
    map: function(doc) { 
     emit(doc.type, null); 
    }, 
    reduce: '_count' 
    } 

    couchapp.loadAttachments(ddoc, path.join(__dirname, '_attachments')); 

다음 :

$ cd path/to/here 
$ mkdir _attachments 
$ couchapp push updateCouchDbDesigndocs.js http://localhost:5984/databaseName 
+0

'couchapp' 도구에 필요한 실제 구조 (map 및 reduce는 폴더의 고유 파일 임)에 정확히 무엇이 있습니까? 자신의 도구를 쓸 가치가 있습니까? –

+0

어떻게 내 couchDB '_design/doc/_view'소스 파일을 웹 개발 워크 플로우에서 다른 모든 스크립트 파일을 관리하는 것과 유사한 방법으로 단일 문서로 관리 할 수 ​​있는지 알고 싶습니다. git 버전 제어 및 빌드/make/grunt 스크립트. – johowie

+0

답변에 대한 귀하의 의견을 볼 때, 나는 그것을 사용하는 방법을 모른 채'couchapp'를 사용했다는 것을 알고 있습니다. 'couchapp'와 함께 즐겁게 ... 그리고 RTFM을 절대 잊지 마세요) –

답변

4

couchapp 도구는 바로이한다. couchapp을 사용하고 다른 스크립트는 사용하지 않습니다.

mycouchappdir 
|-- views/ 
    |-- myview1/ 
     |-- map.js 
     |-- reduce.js 
|-- shows/ 
    |-- myshow1.js 
    |-- myshow2.js 
|-- _attachments/ 
    |-- myattachment.png 

귀하의 map.js 파일은 다음과 같이 표시됩니다 :

function(doc) { 
    emit(doc.type, null); 
} 

그런 다음 바로 mycouchappdir에서 couchapp push 실행 여기에

는 디렉토리 구조입니다.


자신의 저장소에 couchapps를 두는 것도 좋습니다. couchapp push을 실행하면 항상 새 설계 문서가 작성됩니다. 그래서 당신이 당신의 couchapp에 대한 다른 저장소를 가지고 있다면, 저장소를 변경할 때 그것은 couchapp에 대한 변경이며 새로운 개정이 기존의 저장소와 다르다는 것을 압니다.

+0

라고 물었던 것과 비슷한 couchapp의 사용법을 설명합니다.이 모든 것이 합리적입니다. 'couchapp push '. – johowie