CouchDB не обновляет представление для предстоящих и прошлых событий - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть следующий взгляд на couchdb, который будет возвращать только документы с датой, превышающей текущую, например:

function (doc) {

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

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

Таким образом, в этом случае представление всегда будет отображать только будущие (предстоящие) события. У меня также есть тот же перевернутый вид, чтобы показать только прошлые события. Но проблема в том, что, видимо, представление не обновляется на следующий день. Поэтому мне нужно обновить представление вручную, добавив несколько разрывов строк, и поэтому я предполагаю, что это вызывает «обновление».

Любые идеи о том, как я мог бы сделать эту работу?

Большое спасибо

1 Ответ

3 голосов
/ 30 сентября 2011

Не забывайте, что код карты для каждой записи выполняется при создании / изменении документа, поэтому у вас не будет постоянных значений для того, что вы считаете «currentDay».это позволяет вам добавить эту информацию во время запроса.Вот пример:

funciton(doc){

    //Extract from date object.
    var year = ..;
    var month = ..;
    var day = ..;
    //..

    emit([year,month,day], null);
}

Это создаст сложный индекс, упорядоченный по (год, месяц, день).Теперь вы можете запрашивать частичные диапазоны, например, все даты в будущем, используя startkey / endkey.Пожалуйста, смотрите API View для деталей: http://wiki.apache.org/couchdb/HTTP_view_API

...