我无法通过更新处理程序发布到 CouchDB,我不知道我做错了什么。以下是长篇描述。
我使用 erica 创建了一个应用程序,详细信息主要来自 wiki。它工作得很好,直到我决定去发布,但是服务器端,通过根据Apache CouchDB wiki Working_with_Forms的更新处理程序
我用 erica 创建了一个新的“webapp”,构建了一个索引(从 wiki 剪切-n-粘贴,稍作改动):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Minimal Form</title>
</head>
<body>
<div id="contact-form">
<form id="contact" method="post" action="/mydatabase/_design/mydesigndoc/_update/postForm" enctype="multipart/form-data">
<fieldset>
<label for="name">name</label>
<input type="text" name="name" placeholder="Full Name" title="Enter your name" class="required">
<label for="phone">phone</label>
<input type="tel" name="phone" placeholder="+1 (555) 555-5555" required="" pattern="\+?[0-9 )(-]+">
<label for="email">e-mail</label>
<input type="email" name="email" placeholder="you@example.org" title="e-mail address" class="required email">
<label for="blog">blog</label>
<input type="url" name="url" placeholder="http://">
<label for="message">message</label>
<textarea name="message"></textarea>
<input type="submit" name="submit" class="button" id="submit" value="submit">
</fieldset>
</form>
</div>
我将表单属性更改action=
为:htttp://localhost:5984/DBNAME/_design/DESIGNDOCID/_update/UPDATENAME
并添加了enctype="multipart/form-data"
.
然后_design
根据 wiki 构建了一个文档,如下所示:
{
updates: {
postForm: function(previous, request) {
/* during development and testing you can write data to couch.log
log({"previous": previous})
log({"request": request})
*/
var doc = {}
if (!previous) {
// there's no existing document _id as we are not using PUT
// let's use the email address as the _id instead
if (request.form && request.form.email) {
// Extract the JSON-parsed form from the request
// and add in the user's email as docid
doc = request.form
doc._id = request.form.email
}
}
return [doc, toJSON({
"request": request,
"previous": previous,
"doc": doc
})]
}
}
}
这被放置在“ddoc”文件夹中,用erica推送应用程序,根据链接打开网页,找到表单但是当它被提交时,这是我得到的答案:
{"error":"unnamed_error","reason":"(new TypeError(\"point is undefined\", \"/usr/share/couchdb/server/main.js\", 1475))"}
我摆弄了 action="..." 属性,甚至像这样放置绝对地址:
http://localhost:5984/mydatabase...
我已将 toJSON() 替换为 JSON.stringify()。
我已经重新启动了这个过程并重新完成了这个项目。无济于事。
我有一种明显的感觉,我已经“失明”了,解决方案可能就在我眼前,但我看不到它。似乎POST-http-request没有问题,因为我之前尝试过AJAX(忘记“content-type”)时服务器已经抱怨过,但这次似乎是内部服务器问题。我不知道。真的。
总而言之,问题是:有人可以帮助我吗?请。