我在couchdb上有以下视图,它只会返回日期大于当前日期的文档,如:
function (doc) {
var eventDay = new Date(new Date(doc.start).toDateString()),
currentDay = new Date(new Date().toDateString());
if (eventDay > currentDay) {
emit();
}
}
因此,在这种情况下,视图将始终仅显示未来(即将发生的)事件。我也有相同的倒置视图,只显示过去的事件。但问题是显然第二天没有更新视图。所以我必须通过添加几个换行符来手动更新视图,所以我想这会导致'刷新'。
关于如何使这项工作的任何想法?
非常感谢
答案 0 :(得分:3)
不要忘记每个条目的地图代码是在文档创建/更改时执行的,因此您不会对您认为的“currentDay”具有一致的值。
相反,您必须构建一个允许您在查询期间添加此信息的视图。这是一个例子:
funciton(doc){
//Extract from date object.
var year = ..;
var month = ..;
var day = ..;
//..
emit([year,month,day], null);
}
这将创建一个复杂的索引,按(年,月,日)排序。您现在可以使用startkey / endkey查询部分范围,例如将来的所有日期。有关详细信息,请参阅View API:http://wiki.apache.org/couchdb/HTTP_view_API