Couchapp 在查询视图时返回 304

Posted

技术标签:

【中文标题】Couchapp 在查询视图时返回 304【英文标题】:Couchapp returns 304 when querying a view 【发布时间】:2011-11-21 06:34:00 【问题描述】:

我正在构建一个简单的 couchapp CRUD 应用程序。当我获取视图时,我从 CouchDB 收到 304 响应。在蒲团中,相同的视图返回文档。 下面是我查询视图并将返回的项目附加到 div 的 sn-p。在 javascript 控制台中,我收到一条错误消息“无法读取属性 _id of null”

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>");
     
    
);



【问题讨论】:

【参考方案1】:

我终于弄清楚了这个问题。我用过

couchapp generate view byitemname

生成我的视图。它创建了一个“map.js”以及一个“Reduce.js”文件。我根据我的要求编辑了 map.js 文件,但是当我获取视图时,空的 reduce.js 文件导致 couchdb 返回 null。

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

【讨论】:

【参考方案2】:

304 表示数据已经在浏览器的缓存中;在您看来,它与 200 相同,只是更快。

如果仔细阅读错误,它说该行的值字段为空。这意味着您正在执行以下操作:

emit("something", null);

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

【讨论】:

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

以上是关于Couchapp 在查询视图时返回 304的主要内容,如果未能解决你的问题,请参考以下文章

CouchApp 无法从视图中检索键/值对,但 Futon 可以

在 CouchApp 查询中调用多个视图

CouchDB 以 XML 格式返回数据

如果服务器返回304,则Edge不播放视频

HTTP 304

从 CouchApp 发布数据库视图