CouchDB不会更新即将发生的事件和过去事件的视图

时间:2011-09-30 08:07:56

标签: date view couchdb

我在couchdb上有以下视图,它只会返回日期大于当前日期的文档,如:

function (doc) {

    var eventDay = new Date(new Date(doc.start).toDateString()),
        currentDay = new Date(new Date().toDateString());

    if (eventDay > currentDay) {
       emit();
    }
}

因此,在这种情况下,视图将始终仅显示未来(即将发生的)事件。我也有相同的倒置视图,只显示过去的事件。但问题是显然第二天没有更新视图。所以我必须通过添加几个换行符来手动更新视图,所以我想这会导致'刷新'。

关于如何使这项工作的任何想法?

非常感谢

1 个答案:

答案 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