我正在构建一个简单的couchapp CRUD应用程序。当我获取视图时,我从CouchDB得到304响应。在蒲团中,相同的视图返回文档。 下面是我查询视图并将返回的项目附加到div的片段。在javascript控制台中,我收到一条错误消息“无法读取属性_id为空”
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>");
}
}
});
}
}
答案 0 :(得分:3)
我终于弄明白了这个问题。我用了
couchapp generate view byitemname
生成我的观点。它创建了一个“map.js”以及一个“Reduce.js”文件。我根据我的要求编辑了map.js文件,但是当我获取视图时,空的reduce.js文件导致couchdb返回null。
请注意,在蒲团中,视图“byitemname”正常工作,因为在蒲团中,您必须显式运行reduce.js,但在从应用程序获取时,这会自动发生。
答案 1 :(得分:1)
304表示数据已经在浏览器的缓存中;对于你的观点,它与200相同,只是更快。
如果仔细阅读错误,则表示该行的value字段为null。这意味着您正在执行以下操作:
emit("something", null);
在视图的map函数中。你可以发布你的地图功能吗?