Couchapp - 从couchdb中删除文档

时间:2011-11-20 14:24:40

标签: jquery couchdb couchapp couchbase

我是JQuery的新手,只是想通过跟随this来了解Couchapp

到目前为止我想出了这个 -

我在db'addressbook'

中创建了两个文档
curl -X PUT http://127.0.0.1:5984/addressbook    
curl -X PUT http://127.0.0.1:5984/addressbook/Fred -d '{"type":"address","name":"Fred","mobile":"555-0001"}'    
curl -X PUT http://127.0.0.1:5984/addressbook/Barney -d '{"type": "address", "name": "Barney", "mobile": "555-0002"}'

\ addressbook \ _attachments \ index.html

<!DOCTYPE html>  
<html>  
  <head>  
    <title>Simple address book</title>  
    <link rel="stylesheet" href="style/main.css" type="text/css">  
<span style="white-space: pre;"> </span><script src="/_utils/script/json2.js"></script>  
<span style="white-space: pre;"> </span><script src="/_utils/script/jquery.js"></script>  
<span style="white-space: pre;"> </span><script src="/_utils/script/jquery.couch.js"></script> 
  </head>  
  <body>  
    <h1>Simple address book</h1>  
<span style="white-space: pre;"> </span><div id="add"><button type="button" id="add">Add</button></div>  
    <div id="addressbook">  
    </div>
  </body> 
<script src="vendor/couchapp/loader.js"></script>
</script>     
</html>

\地址簿\厂商\ couchapp \ _attachments \ loader.js

function couchapp_load(scripts) {
  for (var i=0; i < scripts.length; i++) {
    document.write('<script src="'+scripts[i]+'"><\/script>')
  };
};

couchapp_load([
  "/_utils/script/sha1.js",
  "/_utils/script/json2.js",
  "/_utils/script/jquery.js",
  "/_utils/script/jquery.couch.js",
  "vendor/couchapp/jquery.couch.app.js",
  "vendor/couchapp/jquery.couch.app.util.js",
  "vendor/couchapp/jquery.mustache.js",
  "vendor/couchapp/jquery.evently.js"  
]);

$db = $.couch.db("addressbook");
function refreshAddressbook() {
    $("div#addressbook").empty();
    $db.view("addressbook/phonenumbers", {
        success : function (data) {
            for (i in data.rows) {
                id = data.rows[i].id;
                name = data.rows[i].key;
                phonenumber = data.rows[i].value;
                html = '<div class="address">' +
                    '<span class="name">' + name + '</span> ' +
                    '<span class="phonenumber">' + phonenumber + '</span> ' +
                    '<a href="#" id="'+ id +'" class="edit">edit</a> ' +
                    '<a href="#" id="'+ id +'" class="delete">delete</a> ' +
                    '</div>';
                $("div#addressbook").append(html);
            }
        }
    });
}

$(document).ready(function () {
    refreshAddressbook();   
});

$(document).ready(function () {
$("div#addressbook").click(function (event) {
    var $tgt = $(event.target);
    if ($tgt.is('a')) {
        id = $tgt.attr("id");               
        if ($tgt.hasClass("edit")) {
            // TODO: implement edit functionality
        }
        if ($tgt.hasClass("delete")) {
            html = '<span class="deleteconfirm">Sure? <a href="#" class="dodelete">Yes</a> <a href="#" class="canceldelete">No</a></span>';
            $tgt.parent().append(html);
        }
        if ($tgt.hasClass("dodelete")) {
            $db.openDoc(id, {
                success : function (doc) {
                    $db.removeDoc(doc, {
                        success : function () {
                            $tgt.parents("div.address").remove();
                        }
                    })
                }
            });
        }
        if ($tgt.hasClass("canceldelete")) {
            $tgt.parents("span.deleteconfirm").remove();
        }
    }
});
});  

然而,我无法将文档删除工作 - 我试图调试并清楚地说当我说 - id = $tgt.attr("id"); - 此处的ID为空。

我必须在这里遗漏一些微不足道的东西。 任何指针都会很棒。

1 个答案:

答案 0 :(得分:1)

我现在正在做同样的事情。问题是您必须为各个链接分配ID。对于原始链接:

html = '<div class="address">' +
   '<span class="name">' + name + '</span> ' +
   '<span class="phonenumber">' + phonenumber + '</span> ' +
   '<a href="#" class="edit" id = "' + id + '">edit</a> '+
   '<a href="#" class="delete" id = "' + id + '">delete</a> '+
   '</div>';

和删除功能中的“dodelete”行:

html = '<span class="deleteconfirm">Sure? <a href="#" class="dodelete" id = "' + id + '">Yes</a> <a href="#" class="canceldelete">No</a></span>';

现在,removeDoc调用可以挂起它。