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

标签 couchdb

我有一个节目,它显示一个表单,其中的字段是从文档中填充的。我想更改字段中的值,然后保存更新后的文档。

我很难找到一个清晰、简洁的示例来说明如何执行此操作。

说真的,只要完成这个例子就会对很多人产生奇迹(为了简洁起见,我将省略很多内容)。

安装 Couchapp

这超出了我的问题范围,但这里是 instructions为了完整性。

创建沙发应用

同样,这超出了我的问题范围。这是一个非常简洁的 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>

创建一个节目

请参阅上面的教程了解如何执行此操作。

将此代码添加到名为 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')
    }
}

通过...用新名称更新文档

那么谁可以同时通过客户端和服务器端来完成这一步呢?

请不要将指南指向我,我需要用您的话来阅读它。

谢谢。

编辑:

虽然返回值不是很好,但只需将表单发送到更新处理程序就会更新文档。

最佳答案

您可能需要查看 update handler functions .

更新处理程序处理细粒度的文档转换。因此,您可以采用一种具有不同目的的表单,并且仅通过更新处理程序更新文档中的相关字段。

您的更新处理程序需要接受 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"];
        }
    }
}

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

一旦您启动并运行了这个基本示例,向您的更新处理程序添加一些更高级的功能就不会更困难了。 :)

关于couchdb - 如何使用和不使用 JavaScript 将数据发布到 CouchDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6395338/

相关文章:

couchdb - 完全卸载 Mac OSX CouchDB

couchdb - PouchDB通过ID获取包含特定字符串的文档

cordova - 在PouchDB中存储视频/音频

javascript - Couchdb 按键过滤并按另一个字段排序

couchdb多语言文档

database - 我可以在 CouchDB 中进行事务和锁定吗?

php - 是否有 NoSQL 解决方案的比较(在某些情况下哪个更好?)

node.js - CouchDB/Cradle 如何反转默认排序?

ubuntu - couchdb安装Windows azure ubuntu - 无法访问5984端口

java - 如何更改 CouchDB 数据库中所有文档的结构?