Marklogic学习 由浅入深(11)—— 个Marklogic应用(下)
摘要:前面的章节,我们已经将数据保存到数据库,并能显示到界面上,这一节,我们要操作页面的数据,并将其更新到数据库。
XQuery思路
对于Marklogic数据的更新,可以考虑两个方向,一个是更新节点,一个是更新整个文档。如果已经知道更改哪一字段,用node-replace是合适的,本例中,不知道用户会更新那些数据,因此,可以对整个文档做覆盖来更新数据。
上一节中,我们已经将开发环境集成到了Eclipse,下面我们就把之前的代码复制到迁移到Eclipse中。
1. 在Eclipse下新建一个XQuery工程2,起名bookserver
2. 在bookserver 下新建文件夹src
3. 将之间的代码文件复制过来,代码层次如下
对于更新操作,这里的更新代码和之前的插入代码基本一样,这样的逻辑是没问题的,在实际的环境中,有些字段可能需要去特殊处理一下,但是其他的部分代码可以重用。
对于删除操作,和我们常见的接口一致,需要拿到id,然后删除对应的数据。
新建XQuery Module,起名为delete.xqy
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
let $id := xdmp:get-request-field("id")
let $uri := fn:concat("/book/", $id, ".xml")
let $_ := xdmp:document-delete($uri)
return "success"
前台处理
我们前台展示的部分,在末尾的地方加上一个处理各种操作的链接框。
我们可以将showbook.js做稍微的改动
$("document").ready(function (){
$.ajax({
url:"findbook.xqy",
type:"get",
dataType:"json",
success:function(data){
$.each(data.books.book, function(commentIndex, comment){
$("#details").append(
"<tr>" +
"<td> <input type='text' value="+comment.id+"></td>" +
"<td> <input type='text' value="+comment.title+"></td>" +
"<td> <input type='text' value="+comment.author+"></td>" +
"<td> <input type='text' value="+comment.page+"></td>" +
"<td> <a href='delete.xqy?id="+comment.id+"'>Delete</a></td>" +
"</td>"
);
});
}
});
})
运行调试
之前的Marklogic配置需要改一下,以便我们在Eclipse中的更改,可以被Marklogic识别到。
1. 找到项目的路径,在项目上右键,选择后一项Properties
2. 找到我们在Marklogic中对server的配置信息
3. 将其中的root项该为项目的Location路径,记得加上/src
4. 访问展示界面http://localhost:8866/showbook.html
5. 发现多了一个delete的链接,也可以做成按钮之类的样子,或者加上update的功能。
6. 点击Delete,发现跳转到了提示页面
7. 再次访问数据展示页面http://localhost:8866/showbook.html,发现删除的数据不见了。
相关文章