В документации государств, update
является надлежащее operationType использовать в большинстве ситуаций.
обновление | Обновите существующую запись. Изменены только указанные вами поля.
Всегда возможно, что запись была обновлена другим клиентом между моментом, когда вы его прочитали, и попыталась применить новые обновления. recordChangeTag
- это то, как сервер знает, какую версию вы читаете, поэтому в документации указано, что вам нужно отправить ее в ходе операции обновления.
Если операцияType обновляется, установите для параметра recordChangeTag значение существующей записи [в словаре словарей].
При попытке обновить запись, которая была уже обновленным кем-то другим, вы получите конфликт с сервера, потому что ваш recordChangeTag стар, и вы должны справиться с этим конфликтом любым способ, имеет смысл в вашем приложении. Возможно, вы хотите сообщить пользователю и, возможно, просто хотите объединить изменения.
В особых ситуациях может потребоваться принудительное обновление.В этом случае вы можете использовать тип операции forceUpdate
, предлагая серверу игнорировать конфликты и принимать это обновление, и в этом случае вам не нужно включать recordChangeTag
.
forceUpdate | Обновите существующую запись независимо от конфликтов. Создает запись, если она не существует.
Если вы используете обычный тип операции update
и получаете успех (а не конфликт), то запись обязательно должна быть обновлена на сервере. Если это не так, происходит что-то еще.
Следует отметить, что при отправке изменений на сервер вам может быть удобнее использовать RecordsBatchBuilder. Вот пример того, что вы можете делать с ним:
myDatabase.newRecordsBatchBuilder()
.createOrUpdate(record1)
.create(record2)
.update(record3)
.forceUpdate(record4)
.delete(record5)
.commit()
Как вы можете видеть, она обрабатывает много вариантов для вас.