我正在編寫一個簡單的CMS CouchApp作爲寵物項目。我在OS X 10.7.4上運行CouchDB 1.2.0,並使用Python CouchApp開發工具。CouchApp:具有include_docs = true的列表函數
基本上我想要頁面作爲文檔,頁面會引用另一個包含網站共享佈局的文檔。頁面文件的
實例:佈局文件
{
"_id": "index",
"_rev": "3-d5451ea54212ae6ec0d8d2d95c5f225d",
"content": "<img src=\"/images/img.jpg\"/> <p>Lorem ipsum dolor sit amet.</p>",
"layout": "layouts/default"
}
例子:
{
"_id": "layouts/default",
"_rev": "1-d2fa96e15ab8768828b262d81265f3d2",
"content": "<!DOCTYPE html> <html><head> <title>Foo</title> </head><body><div>{{content}}</div></body> </html>"
}
所以基本上呈現一個頁面,我需要獲取兩個文件。然後,我會使用小鬍子將頁面呈現到佈局中。
我擺弄了show功能一段時間,但無法弄清楚在函數中獲取佈局文件的方法。然後我偶然發現include_docs
,我現在試圖讓這個工作使用列表函數和視圖。我的地圖功能如下:
function(doc) {
if (doc.layout) {
emit([doc._id, 1], doc);
emit([doc._id, 0], {_id: doc.layout });
}
};
當我瀏覽到在瀏覽器將參數include_docs=true&startkey=["index",0]&endkey=["index",1]
視圖本身,它只是罰款,並加載佈局文件。
但是,佈局文檔不會傳遞給列表函數。運行對上述觀點
function(head, req) {
var doc = null;
var row = getRow();
do
{
if (!row.value.layout){
doc = row.value;
}
} while (row = getRow())
for (i in doc) {
send(i);
}
}
此列表功能...用相同的參數渲染:
_id
我做了一些谷歌搜索,發現有a bug in CouchDB其中鏈接文檔沒有得到傳遞給列表函數。據我所知,這應該已經解決了。這是迴歸還是我被推遲了?