#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"