是否可以根据当前日期在列表中指定couchdb查询参数?

时间:2012-02-08 16:56:20

标签: javascript couchdb couchapp

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

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

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

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函数中指定,但是有没有办法在list函数中设置startkey属性?在第一次致电getRow()之前?当然,我可以解析密钥并将其与列表中的当前日期进行比较,但这会使查询参数的意图完全无效。还有更好的方法吗?

<小时/> 背景故事

列表URL实际上是从更好的URL重写的。我在rewrites.json中有以下属性:

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

日期是静态的,但参数应始终反映当前日期。

1 个答案:

答案 0 :(得分:0)

不,这样做的唯一方法就是在没有简单地基于读取new Date(这会导致缓存问题)丢弃_list函数中的行的情况下,这将是数据库的外部:智能反向代理或通过制作确保视图的链接具有正确的启动密钥。 CouchDB的重写不支持JavaScript干预,任何超过该级别的内容都无法修改从磁盘中提取的数据。