Couchdb View不会重新编制索引

时间:2015-06-09 02:25:50

标签: couchdb

我有一个看起来像这样的观点:

function(doc) {
    if (doc.type === 'article' && (Date.parse(doc.published) < (Date.now() - 30 * 60 * 1000))) {
        emit(doc._id, doc._rev);
    }
}

视图基本上会发出过时的文章(例如{{已发布日期}}&lt; {{present - 30 minutes}}。

现在,问题如下:第一次读取后视图不会自动更新。第一次访问按预期在所有文档上构建视图。但此后似乎它只更新自己(删除,创建或更新新文档)。

然而,这是一个问题,而不是我想要的。 我有其他文章随着时间的推移而变得陈旧 因此我希望沙发也能回复这些文章,但由于它们没有被更改,所以它们不会出现在风景。

这,我刚刚描述的,似乎是期望的couchdb行为(?)。但是,有没有办法显示老化的艺术品呢?

PS:一种简单的测试方法是插入一个带有published = Date.now()和type =&#34; article&#34;并运行此视图。 30分钟后,您将看到文档根据视图定义实际上是陈旧的,但它不会显示在视图中。 30分钟只是一个数字。如果需要,可以将其缩小到较小的时间范围。在此先感谢您的帮助 !

1 个答案:

答案 0 :(得分:0)

是的,这是设计的。视图索引仅在“创建更新”和“删除CRUD操作”部分时更新。

使用密钥完成Read过程中的动态过滤。

在你的情况下,你可能想要发出如下:

emit(doc.published, doc);

然后,在您对CouchDB的调用中,您将添加将在发布日期进一步过滤的参数。