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

#json #curl #couchdb

#json #curl #couchdb

Вопрос:

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

 function(doc) {
  if(doc.date amp;amp; 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"}
  

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

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

Ответ №1:

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 туда. Вы также можете ввести двойные кавычки как " .

Комментарии:

1. ДА! Это работает для CURL. Есть идеи, почему добавление этого к URL при использовании Firefox / Futon, похоже, приводит к сбою?

2. Обновлены идеи о Firefox

3. ... Bash is probably eating your double quotes before curl runs ... в моем случае это было правдой. В командной строке моего терминала команда curl не работала. Затем я использовал обратную косую черту перед двойными кавычками, и проблема была решена. Также мне нужно было использовать обратную косую черту перед amp; символом. Вот так: ?startkey="ב"amp;endkey="ש"

4. ЧАСЫ над аналогичной проблемой. При формировании URL-адреса для выполнения запроса к моему обработчику обновлений ключ должен быть в кавычках, но не значение. Версия 2.2.0. Метод: ‘PUT’. URL: ‘testdata/_design/testDesigns/_update/setKeyValue/DOCID?ключ= «Цвет волос» amp; значение= фиолетовый’ . Если я заключу значение в кавычки, они будут перенесены в базу данных в виде экранированных кавычек.

Ответ №2:

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

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

Ответ №3:

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

У меня это работает в cygwin

Ответ №4:

Вы также можете использовать URL, %codes который " большинством программ выборки преобразуется в двойные кавычки "

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