CouchDB:访问_design视图或提取文档字段的替代方法是什么?

时间:2013-10-08 17:14:18

标签: java javascript xml-serialization couchdb couchapp

我正在尝试切换基于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 结构会在应用程序中需要进行大量更改。是否还有其他方法可以访问 _design / VIEW_ALL_DOC 订单而不是使用HttpClient库?

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

  • 即使任何将 HttpClient java提取器或类似 XML blob 一起使用的解决方案也非常好。

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

    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或两者提供帮助,提示,提示或协助解决此问题将非常感激,没有多少是少量的。感谢您阅读

1 个答案:

答案 0 :(得分:1)

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

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