Просмотр запроса 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]