Представление CouchDB выдает неверную ошибку JSON UTF-8 при использовании ключа, startkey

У меня есть ОЧЕНЬ базовое представление, определенное в CouchDB:

function(doc) {
  if(doc.date && doc.erc) {
    emit(doc.date, doc.erc);
  }
}

Он просто вытягивает ВСЕ документы и сортирует их по датам.

Я пытался добавить

?startkey="2010-05-01"

на URL-адрес, а Futon просто перенаправляет браузер.

Я также пробовал использовать CURL:

curl -X GET http://localhost:5984/plots/_design/by_date/_view/by_date?startkey="2010-05-01"

Это выдает ошибку:

{"error":"bad_request","reason":"invalid UTF-8 JSON"}

Что я делаю неправильно? Это должно быть ОЧЕНЬ базовой вещью.

Спасибо, -Джим


person Jim Wharton    schedule 17.03.2011    source источник


Ответы (3)


CouchDB должен видеть двойные кавычки.

Bash, вероятно, съедает ваши двойные кавычки до запуска curl. Поместите URL-адрес (двойные кавычки и все) в одинарные кавычки.

curl -X GET 'http://localhost:5984/plots/_design/by_date/_view/by_date?startkey="2010-05-01"'

Таким образом, Bash отправит кавычки curl, который отправит их в CouchDB.

Возможно, Firefox или Futon тоже съедают ваши цитаты. Футон имеет серый значок указателя в правом верхнем углу. Это ссылается на необработанный URL-адрес представления. Попробуйте добавить туда startkey. Вы также можете ввести двойные кавычки как %22.

person JasonSmith    schedule 17.03.2011
comment
ДА! Это работает для CURL. Любая идея, почему добавление этого к URL-адресу при использовании Firefox / Futon, похоже, сбивает его с толку? - person Jim Wharton; 17.03.2011
comment
Обновлено идеями о Firefox - person JasonSmith; 17.03.2011
comment
... Bash is probably eating your double quotes before curl runs ... это было верно в моем случае. В моей командной строке терминала команда curl не работала. Затем я использовал обратную косую черту перед двойными кавычками, и проблема была решена. Также мне нужно было использовать обратную косую черту перед символом &. Вот так: ?startkey=\"ב\"\&endkey=\"ש\" - person user3405291; 28.03.2018
comment
ЧАСОВ на аналогичную проблему. При формировании URL для запроса к моему обработчику обновлений ключ должен быть в кавычках, но не значение. Версия 2.2.0. Метод: «ПОСТАВИТЬ». URL-адрес: 'testdata/_design/testDesigns/_update/setKeyValue/DOCID?key=hairColor&value=purple' . Если я заключаю значение в кавычки, они переносятся в базу данных как экранированные кавычки. - person Billbad; 18.12.2018

Я не знаю, есть ли у вас уже решение .. во всяком случае, для таких зрителей, как я, которые получили ту же ошибку. Это решение. пробовал в винде

curl -X GET http://localhost:5984/plots/_design/by_date/_view/by_date?startkey=\"2010-05-01\"
person D George k    schedule 18.04.2011

curl xxx:xxxm@aaaa:5984/kitsi_arin/_design/arinDesign/_view/TestView2?key=\"Arindam\"

Это работает для меня в cygwin

person Arindam    schedule 24.01.2013