快速业务通道

Java开发2.0 - 通过CouchDB和Groovy的RESTClient实现REST - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
equestContentType: JSON,      body: [officer: "Anthony Richards",          location: "Walmart Parking lot",          vehicle_plate: "Delaware 4433-OP",          offense: "Parked in non-parking space",          date: "2009/02/01"]) assert response.data.ok == true : "response from server  wasn''t ok" assert response.data.id == "${id}" : "the returned ID didn''t  match"

每次通过 RESTClient 发出 PUT 时,我都断言 JSON 应答的 ok 值为 TURE ,并且验证是否存在 id 值。注意在清单 4 中,我没有创建 UUID,而是使用了 当前的时间 — 并不是非常简单的技巧,但我已经不再满足于使用简单的交汇点 。

在 CouchDB 中成功创建了新文档之后,它会返回一个包含 UUID 和修订 ID 的 JSON。举例来说,该应答表示我在清单 4 中验证的 JSON:

{"ok":true,"id":"12339892938945","rev":"12351463"}

您的 id 和 rev 值肯定不一样。注意,我可以通过发出 response.data.id 这样的调用来捕获 id 值。

在 CouchDB 中,它将通过修订来跟踪文档,因此您可以返回之前的文档版本 (通过修订 ID),这与 CVS 或 Subversion 中的方法极为类似。

CouchDB 中的视图

现在,我已经创建了一些停车罚单(或者,用 CouchDB 的术语来说是一些文 档),接下来可以在 CouchDB 中创建一些视图了。记住,视图就是实际的 MapReduce 函数;因此,您必须定义它们。在许多情况下,您都不需要 reduce 函数;map 函数可以帮助您完成大多数任务。正如其名,它是任务的映射。举例 来说,您可以映射希望过滤或查找的任何 “事物” 或方面。

我已经定义了两个罚单:一个由 Officer Ree 开示,而另一个是由 Officer Richards 发出的。举例来说,要查找 Officer Ree 开出的所有罚单,您可以编 写一个 map 函数来过滤相应的 officer 属性。然后,您可以将结果传递给 CouchDB 的 emit 函数。

使用 CouchDB 的管理接口:Futon

您可以通过 CouchDB 的 REST 式 API 或通过 CouchDB 的管理接口 Futon 来定义视图。Futon 仅仅是一个 Web 应用程序,可以从 http://localhost:5498/_utils/ 下载它。立即访问该位置(假定您已经跟随我 创建了数据库和一些文档),您应该能看到一个针对 parking_tickets 的简单 接口,如图 1 所示:

图 1. Futon 接口

Java开发2.0 - 通过CouchDB和Groovy的RESTClient实现REST(5)

时间:2010-11-29 IBM Andrew Glover

如果选择 parking_tickets 数据库,则随后可以在最右侧看到一个下拉列表 (Select view:)。通过选择 Custom query...来定义一个自定义视图,如图所 示:

图 2. Futon 的视图选择接口

现在,Futon 接口可允许您定义 map 函数和 reduce 函数。(您可能需要单 击 查看代码 链接)。在 Map 文本框中,定义如清单 5 所示的简单映射:

清单 5. CouchDB 中的简单的 map 函数

function(doc) {   if(doc.officer == "Kristen Ree"){    emit(null, doc);   } }

如您所见,清单 5 中的 map 函数是使用 JavaScript 定义的。它的作用是 通过文档的 officer 属性来过滤 CouchDB 数据库中的文档。特别需要说明的是 ,仅当警官的名称为 Kristen Ree 时,该函数才会传递一个文档给 emit。图 3 显示了在 Futon 中定义此函数的位置:

图 3. 创建一个 MapReduce 函数

接下来,您需要指定文档名称(输入 by_name)和视图名称(输入 officer_ree)。这些名称将作为

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号