2

アドレス データを Couchdb に保存しています。すべてのレコードの key: value ではなく、値だけの配列を取得する方法を探しています。

これが現在の応答です。

{"total rows": 2438, "offset": 0, "rows":[
    {"id": "ec5de6de2cf7bcac9a2a2a76de5738e4", "key": "user_298774", "value": {"city": "Milano", "address":"Corso Como, 42b"},
    {"id": "a2a2a76de573ae4ec5de6de2cf7bcac9", "key": "user_276341", "value": {"city": "Vicenza", "address":"Via Quinto Sella, 118"}
    ... (etc).
]}

本当に必要なのは:

[{"city": "Milano", "address":"Corso Como, 42b"},
 {"city": "Vicenza", "address":"Via Quinto Sella, 118"},
...]

JSON 応答が消費する帯域幅の使用を最小限に抑える必要があります。ビューを単純な配列に変換する方法が見つからないようです。提案?

4

1 に答える 1

3

取得している応答は、Couch の REST ベースのプロトコルに準拠しています。再フォーマットするために、 show functionslist functionsの 2 つのメソッドが提供されています。基本的な考え方は同じですが、1つ目は文書の検索に向いていて、一覧機能はあなたに向いています!

list 関数はサーバー内でクエリを実行し、JS コードで任意に変換された出力を送信します。必要な API は単純です。

  • 関数を使用して、ビューから各レコードを取得しgetRow()ます。
  • objを使用して JS オブジェクトを文字列 (JSON を含む) にエクスポートしますtoJSON(obj)
  • を使用して出力をクライアントに送信しますsend(json)

データを含む map/reduce ビューの URL が で/mydb/_design/myapp/_view/mydocs-by-userあり、リスト関数名が である場合、URL を使用mylistして再フォーマットされた結果をクライアントに取得します/mydb/_design/myapp/_list/mylist/mydocs-by-user

念願のチュートリアルについては、上記のリスト関数のドキュメントとガイドの章を参照してください。

于 2013-05-28T10:08:10.480 に答える