Просто начать.Почему мой многократный запрос GET для Cloudant возвращает все документы?
У меня есть взгляд на облачный, по словам, который обеспечивает просмотр всех документов и их ключевых слов. Это выглядит следующим образом:
bywords = function(doc) {
var tokens, re1,
uniq = function(a) {
var o = {}, i = 0, L = a.length, r = [];
for (; i < L; i++) {
if (a[i] !== '' && a[i] !== ' ') {
o[a[i]] = a[i];
}
}
for (i in o) { r.push(o[i]); }
return r;
};
if (doc.observation && doc.observation !== '') {
tokens = uniq(doc.observation.split(/(+)|\./));
if (tokens && tokens.length > 0) {
tokens.map(function(token) {
emit(token, null);
});
}
}
};
(я не думаю, что есть unique
п доступный мне в разработке доке, так что вид п определяет свой собственный.)
Результата видовых выглядит например:
....
{
"id": "doc-095141",
"key": "Vivamus",
"value": null
},
{
"id": "doc-102754",
"key": "Vivamus",
"value": null
},
{
"id": "doc-094047",
"key": "volutpat",
"value": null
},
{
"id": "doc-092332",
"key": "vulputate",
"value": null
},
....
Для каждого слова в отдельном поле документа имеется один элемент для каждого документа.
ок ...
Запросы по ключевым работает прекрасно. Я имею в виду, это:
https://myserver.cloudant.com/fop/_design/baseViews/_view/bywords?key=%22amet%22
... возвращает ожидаемое подмножество элементов из вида. Это несколько штук, меньше 10.
С другой стороны, запрос с несколькими ключами возвращает все элементы в представлении. Если бы я это сделать:
https://.../_design/baseViews/_view/bywords?keys=%5B%22amet%22%5D
... тогда я получаю каждый элемент. Множество предметов. Не то, что я хочу.
Как указать несколько ключей в GET?
Я не верю, что хочу startkey
и endkey
. Я хочу, чтобы элементы с ключами присутствовали в указанном мною наборе.
ps: Я знаю о the option to POST a JSON keys array. Я еще не пробовал. Из моего чтения документа я должен был бы сделать GET и указать несколько ключей в строке запроса.
EDIT
Я просто попытался опцию POST. Он работает так, как ожидалось. Другими словами, этот запрос HTTP:
POST https://myserver.cloudant.com/fop/_design/baseViews/_view/bywords
...headers here...
{"keys":["amet"]}
..returns, что я ожидал, что он вернется: несколько совпадающих документов.
Итак, я больше не заблокирован, но для меня остается загадкой, что форма GET/URI для указания ключей не работает на Cloudant.
Я использую Cloudant.com. Я не знаю, какую версию CouchDB они запускают. – Cheeso
Просто нажмите на '/' вашего сервера, он сообщит об этой версии. – smathy
'{" couchdb ":" Welcome "," version ":" 1.0.2 "," cloudant_build ":" 613 "}' Итак, может быть, эта ошибка все еще присутствует в Cloudant? У вас есть ссылка на jira для этой ошибки? – Cheeso