2010-12-11 11 views
13

私はCouchDBを学びたいと思っています。私はFutonでビューなどを作成できますが、私は自分のデザインドキュメントをデスクトップに書き、cURLを使ってアップロードします。 「Definitive Guide」は、コンテンツ文書をcURLで更新することを示していますが、すべての設計文書はFutonまたはCouchAppのいずれかです。cURLを使用してデザインドキュメントをCouchDBにアップロードするにはどうすればよいですか?

現在のデザイン文書をローカルファイルにダウンロードし、ファイルを編集してからCouchDBに送り返したいと思います。

CouchDBデザインドキュメントをダウンロードしてアップロードするためのcURLコマンドとは何ですか?

答えて

19

「task.json」ファイルにデータベースに「DEV-タスクを」デザインファイル「タスク」をダウンロードします。ファイルを編集したら、あなたはそれを元に戻すことができ

curl http://localhost:5984/dev-task/_design/task > task.json 

を。

curl -X PUT http://localhost:5984/dev-task/_design/task -d @task.json 

task.jsonに適切なリビジョン番号が含まれているためです。ファイルを再度変更したい場合は、最初に最新のリビジョン番号を取得するためには、再度ダウンロードする必要があります。

6

からの回答にもかかわらず、Victor Nicolletが該当しますが、CouchAppなどのCLIツールを使用することをおすすめします。 - 簡単に始まり、非常に効果的です。 また、これらのツールは安定しており、すでに長年前から成熟しており、常に貢献者のコミュニティによって強化されています。

なぜですか?

  1. デザイン・ドキュメントはJSONオブジェクトであり、エディタでオーバーロードされたスキュー・フォールドで知られています。たとえば、コメントはなく、キー属性を含むすべての文字列を文字列で囲む必要があります。
  2. JSONドキュメントは機能を含むようには設計されていません。 Couch-DBのソリューションは、機能を文字列化する必要があるため、編集が難しいためです。 編集者は、機能を実行可能な形式に変換し、編集し、再度文字列化する必要があります。
  3. CouchDBでは、udpatedドキュメントが既存のバージョンと一致する必要があります(更新が成功した場合は、次の検証を再実行します)。これには、エディターがバージョンを追跡し、更新プログラムを適用するたびに使用する必要があります。
  4. アタッチメント(マップ関数間のコード再利用のための基本的なもの、またはCouchDBのWebサーバーから直接提供されるアプリケーションでよく使用される)は、すべての添付ファイルが通常別々にアップロードされるか、より大きなscufold。これらの問題へ

ソリューションは、コードが、彼がに使用されるのと同じ方法でファイルのように、彼はその後、SCMにチェックインすることができ、通常のJavaScriptファイルの編集作業が可能CLIユーティリティであり、コマンドによりCLIツールの変換を持っていますそれらを有効なJSONに追加し、更新する必要がある添付ファイルがあればそれをすべてターゲットCouchDBにアップロードします。

このようなソリューションは、 - 次のようになります。

  • CouchAppそれ2つの味(PythonとNodeJS)
  • 鑑三(つまり、実際にははるかにではなく、誰のためであるが、ほとんど間違いなく言及worths)
  • 年代に

私は個人的にcouchapp over NodeJSを使用します。私はそれについてのBIOSだと言う必要があるでしょうが、 は楽しい:)

UPDATED 、〜2年後に

はここで、言及する価値が別のツールですしています。 ddocsと呼ばれています。これはnode-couchappと同じプリンシパルに基づいており、個人的な開発と同様に継続的な統合フローに向けられています。 package.json内の指定されたセクションを使用してddocsの配備に関する情報を保持し、開発者/ビルドサーバーがCLI引数を使用して任意の設定を上書きできるようにします。

+0

偉大な答えですが、私たちは "kanzo is much _____"とぶら下がっていました。 – Armand

+0

これは、ddocをアップロードするための単純なツール以上のものです。ほとんどのパラダイムです。しかし、これはすべてこの質問の範囲から外れているので、基本的に - それは少なくとも見てみましょう。 –

関連する問題