2011-11-21 45 views
1

我正在构建一个简单的couchapp CRUD应用程序。当我获取视图时,我从CouchDB获得了一个304响应。在蒲团中,相同的视图返回文档。 下面是我查询视图并将返回的项目追加到div的片段。在JavaScript控制台中,我得到一个错误说“无法读取空的财产_id”Couchapp在查询视图时返回304

db = $.couch.db("itemly"); 
function updateItems(){ 
    $("#all").empty(); 
    db.view("itemly/byitemname",{ success: function(data){ 
    for (i in data.rows){ 
     $("#all").append('<div id="' + data.rows[i].value._id + '" class ="itemrow"><span>'+data.rows[i].value.name + "</span><span>"+data.rows[i].value.price + "</span><span>"+data.rows[i].value.category + "</span><span>"+'<a href="#" id="'+ data.rows[i].value._id + '" class = "edit"> Edit Item </a>' +"</span><span>"+'<a href="#" id="'+ data.rows[i].value._id + '" class = "remove"> Remove Item </a>' +"</span></div>"); 
    } 
    } 
}); 
} 

} 

回答

3

我终于明白了这个问题。我用

couchapp generate view byitemname 

来产生我的看法。它创建了一个“map.js”以及一个“Reduce.js”文件。我按照我的要求编辑了map.js文件,但是当我提取视图时,空的reduce.js文件导致couchdb返回null。

请注意,在蒲团中,“byitemname”视图工作正常,因为在蒲团中,您必须显式运行reduce.js,但从应用程序中获取时会自动发生。

1

304意味着该数据已经在浏览器的缓存;为了您的观点,它与200相同,只是速度更快。

如果仔细阅读错误,则表示该行的值字段为空。这意味着你正在做的是这样的:

emit("something", null); 

在地图功能的视图。你能发布你的地图功能吗?

+0

映射函数是正确的,但我也直接在视图中有一个空的reduce.js文件,最终导致null。 – Neha