couchdb, как переименовать вложение - PullRequest
3 голосов
/ 05 марта 2012

Я пишу приложение, похожее на cms, и хочу, чтобы мои изображения сохранялись в виде вложений в couchdb. Проблема заключается в именовании вложений, потому что я не хочу, чтобы мои изображения назывались одинаково (например, /db/doc_id/thumb.jpg)

В идеале имена вложений должны зависеть от поля doc.name. Чтобы сделать эту работу, я должен был бы переименовывать вложение каждый раз, когда пользователь изменял имя (описание | alt) текущего документа фотографии.

Итак, мой вопрос: как изменить имя вложения? или, может быть, я должен пойти другим путем в решении моей проблемы?

Ответы [ 2 ]

2 голосов
/ 02 июля 2012

Шимон,

Я бы посоветовал рассмотреть возможность использования идентификаторов UUID для имен документов и сохранять вложение как что-то «статичное», например «оригинал», «большой палец», «300 в ширину» и т. Д. Имя, данное пользователем при загрузке файла может быть сохранен как ключ, и вы можете использовать индекс MapReduce для получения изображения / файла, используя это имя позже.

Однако, если вы пойдете по этому пути, вам придется столкнуться с проблемой «дубликатов» немного по-другому - вы можете легко загрузить одно и то же изображение несколько раз с одним и тем же именем, предоставленным пользователем, и не будет конфликт.

Однако, в зависимости от того, что вы создаете, заставить пользователя предоставлять уникальное имя, как правило, неразумно, например, Flickr (среди многих других) этого не делает.

Если вам действительно нужно присвоить doc_id == имя, данное пользователем, тогда все равно будет целесообразно хранить вложения под статическими именами, поэтому вам не придется обновлять имя вложения.

Наконец, если вы чувствуете, что действительно должны изменить имя вложения (и, безусловно, в некоторых случаях это необходимо), самый простой способ - получить вложение из старого местоположения (или с документом), поместив его как новое имя и УДАЛИТЬ вложение со старым именем.

Надеюсь, это поможет!

0 голосов
/ 23 мая 2012

Используйте эту команду>

curl -v http://localhost:5984/database/DocumentID/OldFileName?rev=RevisionID -X MOVE -H "Destination: NewFileName"
...