1

我的 couchdb 中有几个文件格式如下:

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

有一个视图使用startas 键列出这些文档。这是因为这些日期自然排序:

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

startkey然后我可以通过查询参数访问接下来的三个事件:viewname?startkey=\"2012-02-08\"&limit=3

现在我使用一个列表用一些 HTML 来格式化这个视图:

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

当前日期是动态的,不能直接在视图的map函数中指定,但是有没有办法startkey在list函数中设置属性呢?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 回答