ektorp 자바 클라이언트를 사용하여 내 객체를 couchdb에 보내고 싶습니다. 하지만 필자의 바이타 레이 값을 couchdb에 올바로 쓸 수는 없었다.bytearray를 couchdb에 작성하는 방법은 무엇입니까?
내가 문자열로 된 ByteArray를 변환하면 : : 다음과 같은 내 자바 객체
메타 데이터 값은 다음과 같이 CouchDB를에 저장됩니다 "AgIGZm9vBmJhegA ="는 (64 기수)이 있음을 의미 "foobaz". 왜 내 바이어 레이 값이 변경 되었습니까?
내 예 번호 :
public void put(K key, T obj) {
final Map<String, Object> doc = new HashMap<>();
doc.put("_id", key.toString());
Schema schema = obj.getSchema();
List<Field> fields = schema.getFields();
for (int i = 0; i < fields.size(); i++) {
if (!obj.isDirty(i)) {
continue;
}
Field field = fields.get(i);
Schema.Type type = field.schema().getType();
Object fieldValue = obj.get(field.pos());
Schema fieldSchema = field.schema();
fieldValue = serializeFieldValue(fieldSchema, fieldValue);
doc.put(field.name(), fieldValue);
}
db.update(doc);
}
private Object serializeFieldValue(Schema fieldSchema, Object fieldValue){
...
byte[] data = null;
try {
SpecificDatumWriter writer = getDatumWriter(fieldSchema);
data = IOUtils.serialize(writer, fieldValue);
} catch (IOException e) {
LOG.error(e.getMessage(), e);
}
fieldValue = data;
...
return fieldValue;
}
아니요, 처음에는 데이터베이스에 대한 데이터가 없습니다. "db.update()"는 db에 데이터가없는 경우 새 데이터를 새 행으로 추가합니다. 테스트 케이스를 실행합니다. – cguzel