1

現在、couchdb に関する私の見解は、常に次のようなものを返します。

{
  "key":"somekey",
  "value":"somevalue"
}

次のようなものを返す方法があるのだろうか:

{
  "somekey":"somevalue"
}

「somekey」値を持つキーを配列全体で検索することなく、「somekey」に直接アクセスする必要があります。

ありがとう

4

3 に答える 3

2

ビューを使用する場合、これまで見てきたように、ドキュメントのコレクションをキー/値以外の形式で返す直接的な方法は CouchDB によって提供されません。

クライアント側のデータをキー付きインデックスにマップするか、ビューから直接キーでドキュメントをリクエストする必要があります。

/sample/_design/docs/_view/by_somekey?key="somekey"

JavaScript で高速マップ オプションを探している場合 (反復ごとに関数を呼び出すことを回避する)、もちろん、次の単純なロジックを使用できます。

// docs are the documents returned from the view
var map={};
for(var i=0,len=docs.length;i<len;i++) {
  map[docs[i].key] = docs[i].value;
}
于 2013-02-01T23:02:00.007 に答える
0

Couch クエリのフォーマットやデータが気に入らない場合は、list 関数を使用して自由に再フォーマットできます。このようなものがうまくいくはずです:

function(head, req){
  send('[');
  row = getRow();
  if (row){
    // here you make your own JS structure to be returned,
    // serialize it with toJSON() and send to client with send()

    // First row:
    var new_row = {};
    new_row[row.key] = row.value;
    send(toJSON(new_row));

    while(row = getRow()){
      // Next rows:
      send(',');
      var new_row = {};
      new_row[row.key] = row.value;
      send(toJSON(new_row));
    }
  }
  return ']';
}
于 2013-02-02T09:30:57.417 に答える