CouchDB / Sofa:无法使用保存按钮创建新帖子(来自默认模板)

时间:2014-10-16 19:44:47

标签: couchdb couchapp

我目前正在学习CouchDB并使用O' Reilly书作为入门指南。我一直非常关注它,但是,在与沙发合作时,这本书要求我检查当我们点击“保存”时会发生什么。在我们的编辑模板上。这本书说我应该看到成功的回复(使用Firebug按钮触发Put请求),但是,我得到了一个"

{"错误":" not_found","原因":"缺少在设计doc _design / sofa"上显示功能new.html }"

现在我才开始阅读本周,我知道答案可能很明显,但是如果有人能够指出我正确的方向(在沙发中添加,修复错误,补丁),这将是很好的。

我最初的猜测是我需要添加一个" new"显示功能,但在我深入研究这种疯狂的追逐之前,我只是想要一些建议。

对不起,如果这是一个菜鸟问题。


{" CouchDB的":"欢迎""的uuid":" 4d9b6082e16607a33dcbfdffb57503b5""版本":& #34; 1.6.1""供应商" {"版本":" 1.6.1""名称":& #34; Apache软件基金会"}}

从(https://github.com/jchris/sofa

下载最新版本的沙发

1 个答案:

答案 0 :(得分:1)

如何解决问题

问题是该页面是从以下网址访问的:

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit

取而代之的是:

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit/

(您的数据库名称可能与' myblogdb'不同)。请注意尾随反斜杠。

为什么show函数被称为" new"没有必要:

将以下查询带到show函数:

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit/This-is-a-second-post

如果存在这样的文档,这将调用edit.js中的函数并使用_id This-is-a-second-post传入文档。如果文件不存在,如

的情况
http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit/new.html

然后edit.js设置传递给data的{​​{1}}对象,以获得新帖子的正确字段。

为什么它会破坏你的情况

通过

访问编辑节目功能时
Mustache.to_html

脚本的亲戚路径不再有效。 然后edit.html中定义的脚本不再正确。 因此,提交处理程序

http://127.0.0.1:5984/myblogdb/_design/sofa/_show/edit

不再被调用。如果它被调用,它最后会$("form#new-post").submit(function() { ... ,这会阻止new.html被发布。

由于未调用,new.html最终会被POST,并将浏览器重定向到

return false

指向不存在的show函数,导致您看到的错误消息。