如何使用和不使用JavaScript将数据发布到CouchDB

Dan*_*oug 3 couchdb

我有一个节目,显示一个表格,其中包含从文档填充的字段.我想更改字段中的值,然后保存更新的文档.

我很难找到一个如何做到这一点的简洁明了的例子.

说真的,只要完成这个例子就可以为很多人创造奇迹(我要留下很多东西来简化这个).

安装Couchapp

这超出了我的问题的范围,但这里是完整性的说明.

创建一个couchapp

同样,这超出了我的问题的范围.这是一个关于如何创建couchapp 的完美简洁教程.

创建一个模板

在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>
Run Code Online (Sandbox Code Playgroud)

创建一个节目

请参阅上面的教程以获取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')
    }
}
Run Code Online (Sandbox Code Playgroud)

使用新名称更新文档...

那么谁可以通过客户端和服务器端完成此步骤?

请不要指向我,我需要用你的话来读.

谢谢.

编辑:

虽然返回值并不漂亮,但只需将表单发布到更新处理程序即可更新文档.

Dom*_*nes 5

你可能想要研究一下update handler functions.

更新处理程序处理粒度文档转换.因此,您可以使用1个表单,它有一个不同的用途,并且只通过更新处理程序更新文档中的相关字段.

您的更新处理程序需要PUT从您的表单中获取请求.浏览器无法直接执行此操作,因此您需要一些javascript来为您处理此问题.如果你正在使用jQuery,这个插件可以采用你的形式,并通过AJAX无缝地提交PUT给你.

在函数内部,您可以获取您接受的字段,在这种情况下name,将其直接应用于文档.(输入验证可以通过validate_doc_update函数处理)

更新处理程序(在您的设计文档中)

{
    "updates": {
        "name": function (doc, req) {
            doc.name = req.form.name;
            return [doc, "Name has been updated"];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

HTML

<form id="myForm" action="/db/_design/ddoc/_update/name/doc_id">...</form>

JavaScript的

$(document).ready(function() {
    $('#myForm').ajaxForm({
        type: "PUT",
        success: function () { 
            alert("Thank you"); 
        }
    }); 
}); 
Run Code Online (Sandbox Code Playgroud)

一旦你启动并运行了这个基本的例子,为更新处理程序添加一些更高级的功能并不困难.:)