Как вы размещаете данные в CouchDB как с использованием JavaScript, так и без него - PullRequest
3 голосов
/ 18 июня 2011

У меня есть шоу, которое отображает форму с полями, заполненными из документа. Я хочу изменить значения в поле, а затем сохранить обновленный документ.

У меня проблемы с нахождением четкого и краткого примера того, как это сделать.

Серьезно, только завершение этого примера сотворило бы чудеса для очень многих людей (я собираюсь опустить много вещей, чтобы сделать это кратким).

Установить Couchapp

Это выходит за рамки моего вопроса, но вот инструкции для полноты.

Создание коуч-аппа

Опять же, это как бы выходит за рамки моего вопроса. Вот совершенно краткое учебное пособие о том, как создать couchapp.

Создать шаблон

Создайте папку в корне вашего couchapp с именем templates . В папке templates создайте HTML-страницу с именем myname.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')
    }
}

Обновите документ с новым именем с помощью ...

Итак, кто может выполнить этот шаг как на стороне клиента, так и на стороне сервера?

Пожалуйста, не указывайте мне руководство, мне нужно прочитать его в ваших словах.

Спасибо.

Edit:

Хотя возвращаемое значение не очень приятное, просто отправка формы в обработчик обновлений приведет к обновлению документа.

1 Ответ

5 голосов
/ 18 июня 2011

Вы, вероятно, захотите взглянуть на 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"];
        }
    }
}

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

После того, как вы запустите этот базовый пример, вам не составит труда добавить некоторые дополнительные функции в обработчики обновлений.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...