У меня есть мнение, которое выглядит следующим образом:CouchDB View не переиндексировать
function(doc) {
if (doc.type === 'article' && (Date.parse(doc.published) < (Date.now() - 30 * 60 * 1000))) {
emit(doc._id, doc._rev);
}
}
Представление в основном излучает статьи, которые являются устаревшими (т.е. {{опубликована дата}} < {{настоящее время - 30 минут} }.
Теперь проблема заключается в следующем: представление не обновляется после первого чтения. Первый доступ создает представление для всех документов, как ожидалось. Но после этого кажется, что он только обновляет себя при изменении (delete , создавать или обновлять новые документы).
Это howev проблема, а не то, что я желаю. У меня есть другие статьи, которые становятся устаревшими с развитием времени поэтому я бы хотел, чтобы кушетка возвращала эти статьи, но поскольку они не изменены, они не появляются в представлении.
Это то, что я только что описал, похоже, ожидается, что поведение couchdb (?). Но есть ли способ показать устаревшие искусства?
PS: Простой способ проверить это, чтобы вставить документ с опубликованными = Date.now() и type = "article" и запустить это представление. Через 30 минут вы увидите, что документ действительно устарел в соответствии с определением вида, но он не будет отображаться в представлении. 30 минут - это всего лишь номер. Если хотите, вы можете уменьшить его до меньшего временного интервала. Заранее спасибо за вашу помощь !
Я могу подтвердить, что это ожидаемое поведение просмотров couchdb. Представления будут пересчитываться только при изменении (для новых документов). Идея: попробуйте «doc.published» часть вашего ключа, например 'emit ([Date.parse (doc.published), doc._id], doc._rev);' поэтому вы можете создать запрос, выбирая все старше х секунд. – h4cc
@JuliusBeckmann Спасибо за ваше предложение. Вы имеете в виду, что я проверяю, не устарели ли статьи в логике приложения (используя ключ запуска/завершения), а не в самом представлении? ... – 82Tuskers
Подумайте о представлении в виде сгенерированного индекса. Этот индекс не будет изменяться сам по себе, но вы можете изменить запрос, чтобы получить трафик этого индекса. Поэтому да, используйте запрос, используя start/end на этом представлении, чтобы получить нужные вам данные. – h4cc