1

開発のために、 couchDB設計ドキュメントを構成するさまざまなコンポーネント(、、)を、他の開発コードと一緒に、たとえばcouchDBというディレクトリに個別のファイルとして保持したいと思いviewsます。変更に満足したら、couchapp.pushを使用してデータベースに送信すると同時に、設計ドキュメントコンポーネントファイルのバージョン管理も可能にします。listsshows

ノードモジュール「couchapp」とノードを使用してディレクトリとそのサブディレクトリで.jsファイルをスキャンし、それらを使用して設計ドキュメントを作成し、couchDBにアップロードすることを考えています。おそらく、次のように構成されたサブディレクトリを使用します。

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

マップとリデュースを同じファイルに入れることは可能ですか?'view1.js'または、それらは別々のファイルにある必要があります'view1-map.js''view1-reduce.js'

現在、私は以下を使用していますが、ノードを使用して.jsファイルを読み取り、それらをddoc.views{}に動的に追加する方法がわかりません。特にjavascript/nodeソリューションの場合は、ガイダンスをいただければ幸いです。

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
4

1 に答える 1

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);
}

次に、から実行couchapp pushmycouchappdirます。


また、couchapps を独自のリポジトリに配置することを検討することもできます。実行couchapp pushすると、常に設計ドキュメントに新しいリビジョンが作成されます。したがって、couchapp に別のリポジトリがある場合、リポジトリに変更を加えると、couchapp に変更が加えられ、新しいリビジョンが古いリビジョンと異なることを認識してプッシュできます。

于 2013-02-16T20:12:29.457 に答える