Просмотр запроса CouchDB с форматированием нескольких ключей
У меня возникла проблема с получением представления couchdb для возврата правильных документов при использовании нескольких ключей.
Это отлично работает, возвращая документы, которые соответствуют:
GET http://example.com:5984/myDb/_design/myFilters/_view/getItemByForeignKeyId?key=abc123
Возвращает все документы в представлении, соответствующие или нет:
GET http://example.com:5984/myDb/_design/myFilters/_view/getItemByForeignKeyId?keys=%5B%22abc123%22%5D
Я обычно очень хорошо разбираюсь в ответах. Но документация CouchDB очень понятна в отношении формата использования нескольких ключей. Я видел, что некоторые используют клавиши? = [123,123], и я также видел? Keys = "abc", "abc".
Если кто-либо может предложить какие-либо разъяснения по "правильному" формату и кодированию нескольких ключевых запросов для CouchDB с использованием метода GET, я был бы очень благодарен.
Ответы
Ответ 1
Чтобы получить несколько ключей из представления, вам необходимо выполнить почтовый запрос и отправить ключи в тело запроса. Ваш HTTP-запрос будет выглядеть так:
POST /myDb/_design/myFilters/_view/getItemByForeignKeyId
Content-Type: application/json
{
"keys" : [
"abc",
"123"
]
}
Ответ 2
function(doc){
{
if([doc.key1, doc.key2])
emit([doc.key1, doc.thingYouWantToKnow]);
}
}
и в строке запроса, в конце
? key = [ "key1Value", "key2Value" ]
Обратите внимание, что это ключ = [], а не клавиши = []!!!!!!!!!
Ответ 3
Не сказать это правильно, но вы действительно можете это сделать и с помощью строки запроса. Контейнеры, заключенные в массив, не должны быть закодированы. Например. это работает для меня:
http://localhost:5984/test/_design/artists_albums/_view/albums_by_artist?keys=[%22Super%20bad%20artist%22,%20%22Fake%20artist%201%22]