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