我的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
}
}
日期是静态的,但参数应始终反映当前日期。
答案 0 :(得分:0)
不,这样做的唯一方法就是在没有简单地基于读取new Date
(这会导致缓存问题)丢弃_list函数中的行的情况下,这将是数据库的外部:智能反向代理或通过制作确保视图的链接具有正确的启动密钥。 CouchDB的重写不支持JavaScript干预,任何超过该级别的内容都无法修改从磁盘中提取的数据。