CouchDB: Какие есть альтернативы доступу к представлению _design или извлечению полей документа?

Я пытаюсь переключить приложение на основе 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
}

Я создал документы, которые работают нормально, но проблема заключается в интеграции и доступе к документам _design в уже существующем приложении Java.

Я использовал 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");
  • Проблема заключается в том, что использование структуры HttpClient потребует много изменений в приложении при интеграции Couchdb. Есть ли другие варианты доступа к порядку _design/VIEW_ALL_DOC, кроме использования библиотеки HttpClient?

  • Существует ли какая-либо концепция XML Blob для документа CouchDB?

  • Даже любое решение об использовании HttpClient с Java-экстрактором или чем-то вроде XML-блоба также очень хорошо.

  • Моя цель, если это возможно, состоит в том, чтобы прийти к решению, к которому я буду использовать 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 ответ

Я не уверен, чего вы на самом деле хотите достичь, но думаю, вы хотите получить все документы, которые вы сохранили в базе данных, с созданным вами документом дизайна. При условии, что вы правильно создали документы, вы можете использовать клиент Java Couch Db (OR Mapper), такой как lightCouch, чтобы преобразовать ваш набор результатов в объект Java, с помощью которого вы можете перебирать набор результатов. Он имеет довольно простой API для работы с Couch DB, который полностью абстрагирует HTTP API, предоставляемый Couch DB.

Чтобы свести к минимуму изменения, необходимые для существующего Java-приложения, вы можете использовать шаблон адаптера, который вы, возможно, уже знаете.

Другие вопросы по тегам