2015-12-11 2 views
2

Я хочу обновить поле в документе couchdb, у которого уже есть вложение. Если я обновляю новое поле с текущей версией, вложение удаляется. Есть ли способ, чтобы я обновлял поле без потери вложения? Я использую API Ektorp для обновления документа.Как обновить документ couchdb без потери существующего вложения

С уважением Сунил.

ответ

4

Когда вы GET документ, который имеет вложение будет включать вложение в «заглушки»:

{ 
    "_id":"attachment_doc", 
    "_rev":1589456116, 
    "_attachments": 
    { 
    "foo.txt": 
    { 
     "stub":true, 
     "content_type":"text\/plain", 
     "length":29 
    } 
    } 
} 

Если вы хотите обновить документ (например, через PUT) вы должны включить «заглушку», в противном случае Кушетка удалит вложение.

Редактировать: Я пропустил, что вы использовали Erktop.

Простейший способ сохранить прикрепленные заглушки должен быть для ваших классов домена для расширения CouchDbDocument.

Если по какой-либо причине вы не можете этого сделать, вам необходимо обеспечить, чтобы заглушки были сериализованы. Вы можете использовать реализацию от here.

+0

Если я копирую свойство «_attachments», мне нужно обновить столбец «no_attachments», или это просто показать, когда прикрепленные файлы прикреплены? –

Смежные вопросы