剛開始。爲什麼我向Cloudant返回所有文檔的多鍵GET查詢?
我有一個關於cloudant,bywords的視圖,它提供了所有文檔及其關鍵字的視圖。它看起來像這樣:
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
FN提供給我的設計文檔,以便查看FN定義自己。)
認爲長相的結果像這樣:
....
{
"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並在查詢字符串中指定多個鍵。
編輯
我只是嘗試了POST選項。它按預期工作。換句話說,這個HTTP請求:
POST https://myserver.cloudant.com/fop/_design/baseViews/_view/bywords
...headers here...
{"keys":["amet"]}
..返回我期望它返回的結果:少數匹配的文檔。
因此,我不再被阻止,但對於我來說,指定密鑰的GET/URI編碼形式在Cloudant上不起作用。
我正在使用Cloudant.com。我不知道他們正在運行什麼版本的CouchDB。 – Cheeso
只需點擊服務器的'/',它就會報告版本。 – smathy
'{「couchdb」:「Welcome」,「version」:「1.0.2」,「cloudant_build」:「613」}'那麼,Cloudant中可能還存在這個錯誤?任何機會你有一個傑拉鏈接該錯誤? – Cheeso