0

我正在尝试切换基于 SQL 的应用程序以使用 Couchdb 来存储和检索它的文档,这些文档基于 _design 文档(例如_design/VIEW_ALL_DOC)。

文件结构如下:

{
    Map<String , String> properties = new HashMap<String,String>();

    properties.put(PRICE_LIST_ID, "111000");
    properties.put(FILE_NAME, "KOOO"); 
    properties.put(VISIBILITY, "True");
    properties.put(DELETION_FLAG, "0"); 
    properties.put(FILE_CONTENT, "Pricelist");
    properties.put(VERSION, "1.0");
    properties.put(CREATION_DATE, "19-09-13"); 
    properties.put(MODIFICATION_USER, "IKK");
    properties.put(MODIFICATION_DATE, "20-09-13");
    properties.put(CREATION_USER, "AOK"); 
    properties.put(CUSTOMER_ID, "02227802");
    properties.put(ORIGINAL_FILE_NAME, "Original");l
}

我创建了运行良好的文档,但问题在于在现有的 Java 应用程序中集成和访问 _design 文档。

我使用HttpClient lib 来访问 _design 文档,如下所示:

HttpClient httpclient = new DefaultHttpClient();    
HttpGet VIEW_ALL_DOCS = new HttpGet("http://localhost:5984/pricelistdocs/_design/VIEW_ALL_DOCS/_view/VIEW_ALL_DOCS");
  • 问题是在集成 Couchdb 时,使用HttpClient结构需要在应用程序中进行大量更改。除了使用 HttpClient 库之外,还有其他访问_design/VIEW_ALL_DOC顺序的替代方法吗?

  • CouchDB 文档是否有 XML Blob 的概念?

  • 甚至任何使用带有java 提取器或XML blob之类的东西的HttpClient的解决方案也非常好。

  • 如果可能的话,我的目标是找到一个解决方案,我将使用 java Extrator访问以及return extractor.getString(record, mapping.get(index));Couchdb 文档的字段,如旧解决方案 blow 。

    ResultSet rs = new ResultSet(response);                                           
    
    List<TransPriceListPdf> result = new ArrayList<TransPriceListPdf>();
    while (rs.next()) {
        TransPriceListPdf temp = new TransPriceListPdf();
    
        temp.setPriceListId(rs.getString(1));
        temp.setPdfFileVersion(rs.getInt(2));
        temp.setPdfFileName(rs.getString(3));
        temp.setOriginalFileName(rs.getString(4));
        temp.setVisibility(VISIBILITY.valueof(rs.getString(5)));
        temp.setDeletionFlag(rs.getInt(6) == 0 ? false : true);
        temp.setPdfFileContents(rs.getBlob(7));
        temp.setCreationDate(rs.getDate(8));
        temp.setCreationUser(rs.getString(9));
        temp.setModificationDate(rs.getDate(10));
        temp.setModificationUser(rs.getString(11));
    
        result.add(temp);
    }
    

尽管我仍然熟悉 Java 和 CouchDB。请任何 Couchdb、Java 或两者的帮助、提示、提示或帮助解决此问题,将不胜感激,数量不多。感谢您阅读

4

1 回答 1

1

我不确定您在这里真正想要实现什么,但我想您想获取您保存在数据库中的所有文档以及您创建的设计文档。如果您已正确创建文档,您可以使用 Java Couch Db 客户端(或 Mapper)(例如lightCouch )将结果集转换为 Java 对象,您可以通过该对象对结果集进行迭代。它有相当简单的 API 可以与 Couch DB 一起使用,完全抽象出 Couch DB 公开的 HTTP API。

为了最大限度地减少现有 Java 应用程序所需的更改,您可以使用您可能已经知道的适配器模式。

于 2013-10-17T07:58:28.413 回答