Можно ли указать параметры запроса couchdb в списке на основе текущей даты? - PullRequest
1 голос
/ 08 февраля 2012

У меня есть несколько документов в моем couchdb, отформатированных так:

{ type: "event", start: "2012-02-08T19:30+01:00", title: "foo" }

Существует представление, в котором перечислены эти документы с использованием start в качестве ключа. Это потому, что эти даты сортируются естественно:

function (doc) {
  if (doc.type == "event") emit(doc.start, doc)
}

Затем я могу получить доступ к следующим трем событиям с помощью параметра запроса startkey: viewname?startkey=\"2012-02-08\"&limit=3

Теперь я использую список для форматирования этого представления с использованием некоторого HTML:

function (doc, req) {
  return provides("html", function() {
    // something with getRow() to query the view
  });
}

Текущая дата является динамической и не может быть указана непосредственно в функции карты представления, но есть ли способ установить свойство startkey в функции списка? Перед первым звонком getRow()? Конечно, я мог бы проанализировать ключ и сравнить его с текущей датой в списке, но это полностью нарушило бы намерения параметров запроса. Есть ли лучший способ?


предыстория

URL-адрес списка фактически переписан с гораздо более приятного URL-адреса. У меня есть следующие свойства в rewrites.json:

{
    "from": "/ausstellungen/rueckblick",
    "to": "_list/rueckblick/exhibitions",
    "query": {
      "startkey": "\"2012-02-08\"",
    "descending": true
  }
}

Дата является статической, но параметр всегда должен отражать текущую дату.

1 Ответ

0 голосов
/ 10 ноября 2012

Нет, единственный способ сделать это без простого отбрасывания строк в функции _list на основе чтения new Date (что в любом случае может вызвать проблемы с кэшированием) - это быть внешним по отношению к базе данных: либо умный обратный прокси-сервер, либо убедившись, что ссылки для просмотра есть правильный стартовый ключ. Переписывание CouchDB не поддерживает вмешательство JavaScript, и все, что выше этого уровня, вы не сможете изменить, какие данные извлекаются с диска.

...