1

私のcouchdbには、次のような形式のドキュメントがいくつかあります。

{ type: "event", start: "2012-02-08T19:30+01:00", title: "foo" }

キーとして使用してこれらのドキュメントを一覧表示するビューがありstartます。これは、これらの日付が自然にソートされるためです。

function (doc) {
  if (doc.type == "event") emit(doc.start, doc)
}

startkey次に、クエリパラメータを使用して次の3つのイベントにアクセスできます。viewname?startkey=\"2012-02-08\"&limit=3

次に、リストを使用して、このビューをHTMLでフォーマットします。

function (doc, req) {
  return provides("html", function() {
    // something with getRow() to query the view
  });
}

現在の日付は動的であり、ビューのマップ関数で直接指定することはできませんがstartkey、リスト関数でプロパティを設定する方法はありますか?getRow()初めて電話する前に?もちろん、キーを解析してリスト内の現在の日付と比較することはできますが、それではクエリパラメーターの意図が完全に無効になります。もっと良い方法はありますか?


裏話

リストのURLは、実際にはもっと良いURLから書き直されています。rewrites.jsonには次のプロパティがあります。

{
    "from": "/ausstellungen/rueckblick",
    "to": "_list/rueckblick/exhibitions",
    "query": {
      "startkey": "\"2012-02-08\"",
    "descending": true
  }
}

日付は静的ですが、パラメーターは常に現在の日付を反映する必要があります。

4

1 に答える 1

0

いいえ、読み取りに基づいて_list関数の行を単純に破棄せずにこれを行う唯一の方法new Date(とにかくキャッシュの問題を引き起こす可能性があります)は、データベースの外部にあります:スマートリバースプロキシまたはビューへのリンクが正しいことを確認することによってスタートキー。CouchDBの書き換えはJavaScriptの介入をサポートしておらず、そのレベルを超えると、ディスクからフェッチされるデータを変更できなくなります。

于 2012-11-09T22:33:25.200 に答える