2015-03-24 2 views
3

Существует обычный вариант использования, когда вам нужно обновить или вставить. Например:find_and_modify с помощью upsert с использованием Python-EVE

obj = db['data'].find_and_modify(
     { 
      'Name': data['Name'], 
      'SourcePage': data['SourcePage'], 
     }, 
     data, 
     upsert=True 
    ) 

Конечно можно разделить этот запрос в GET, а затем PATCH или INSERT, но может быть, есть способ лучше?

P.S. eve предоставляет некоторые интересные функции, такие как версии документа и метаданные (_created, _updated и т. д.)

+0

Что вы хотите сказать? – styvane

ответ

5

upsert поддержка теперь входит в состав upcoming release.

Не нужно ничего делать. По умолчанию функция включена. Поэтому, если пользователь пытается установить PUT элемент, который не существует, будет создан новый элемент. Поле id, отправленное в полезную нагрузку, игнорируется.

Если пользователь не хочет эту функцию, пользователю необходимо явно установить UPSERT_ON_PUT на номер False. Теперь пользователь возвращает «старое» поведение. то есть когда пользователь пытается удалить PUT несуществующий элемент, возвращается 404.

+0

Спасибо. Я пытался найти этот ответ более часа. –

+0

hey Vaze, даже если параметр UPSERT_ON_PUT равен TRUE, im все равно получает значение 404. Каким должен быть URL-адрес при отправке запроса PUT на несуществующий элемент? –

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