我有一个节目,显示一个表格,其中包含从文档填充的字段。我想更改字段中的值,然后保存更新的文档。
我很难找到一个如何做到这一点的简明例子。
说真的,刚刚完成这个例子会为很多人创造奇迹(我会留下很多东西来简化这一点)。
安装Couchapp
这不在我的问题范围内,但这里是instructions的完整性。
创建一个couchapp
同样,这超出了我的问题的范围。这里有一个关于如何创建couchapp的完美简洁tutorial。
创建模板
在couchapp的根目录中创建一个名为 templates 的文件夹。在 templates 文件夹中,创建一个名为 myname.html 的HTML页面。将以下内容放入其中。
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<form method='post' action='#'>
<fieldset>
Hello <input type='text' name='name' value='{{ name }}'>
<input type='submit' name='submit' value='submit'>
</form>
</body>
</html>
制作节目
请参阅上面的教程,了解hwo。
将此代码添加到名为myname的节目中。
function(doc, req) {
if (doc) {
var ddoc = this
var Mustache = require("vendor/couchapp/lib/mustache");
var data = {
title: "The Name",
name: "Bobbert"
}
return Mustache.to_html(ddoc.templates.myname, data)
} else {
return ('nothing here baby')
}
}
使用新名称更新文档...
那么谁可以通过客户端和服务器端完成此步骤?
请不要指向我,我需要用你的话来阅读。
感谢。
编辑:
虽然返回值并不漂亮,但只需将表单发布到更新处理程序即可更新文档。
答案 0 :(得分:5)
您可能希望查看update handler functions
。
更新处理程序处理粒度文档转换。因此,您可以使用1个表单,它有一个不同的用途,并且只通过更新处理程序更新文档中的相关字段。
您的更新处理程序需要从表单中获取PUT
请求。浏览器无法直接执行此操作,因此您需要一些javascript来为您处理此问题。如果你正在使用jQuery,这个plugin可以采用你的形式,并使用PUT
通过AJAX无缝地提交它。
在函数内部,您可以获取您正在接受的字段,在本例中为name
并将其直接应用于文档。 (输入验证可以通过validate_doc_update
函数处理)
{
"updates": {
"name": function (doc, req) {
doc.name = req.form.name;
return [doc, "Name has been updated"];
}
}
}
<form id="myForm" action="/db/_design/ddoc/_update/name/doc_id">...</form>
$(document).ready(function() {
$('#myForm').ajaxForm({
type: "PUT",
success: function () {
alert("Thank you");
}
});
});
启动并运行此基本示例后,向更新处理程序添加一些更高级的功能并不困难。 :)