Насколько мне известно, API обновления или создания отсутствует (см. https://your-sugarsite/rest/v10/help
), однако, если вы просто хотите использовать API (а не настраивать его), вы можете синхронизировать данные следующим образом:
1) Получите все идентификаторы записей, которые имеют пользовательский uuid, используя конечную точку POST /rest/v10/<module>/filter
и полезную нагрузку, подобную:
{
offset: 0,
max_num: 1000,
fields: ["id", "custom_uuid_c"],
filter: [{"custom_uuid_c": {"$not_empty": ""}}],
]
}
или если вам просто нуженопределенный пользовательский uuid одновременно:
{
offset: 0,
max_num: 1000,
fields: ["id"],
filter: [{"custom_uuid_c": {"$equals": "example-custom-uuid"}}],
]
}
Ответ будет выглядеть примерно так:
{
next_offset: -1,
records: [
{"id": "example-sugar-uuid", "custom_uuid_c": "example-custom-uuid"},
...
],
}
Примечания:
- Обязательно оцените
next_offset
, так как даже при высоком max_num
вы можете не получить все записи сразу из-за ограничений сервера.Пока next_offset
не -1
, вы должны использовать его значение как offset
в новом запросе для получения оставшихся записей. - Вы можете указать все имена полей, которые необходимо синхронизировать, в *Массив 1028 *, чтобы вы могли получить эту информацию как можно раньше и могли проверить, требуется ли обновление вообще (возможно, данные все еще актуальны)
- Сахар также всегда включает определенные поля в ответнезависимо от того, были ли они запрошены или нет.(Например,
id
и date_modified
).Я не включил их все в фрагменты ответов для простоты.
2)
На основе информации, полученной на предыдущем шаге, который вы знаетек какому идентификатору сахара принадлежит какой пользовательский UUID, и вы можете обнаружить / подготовить данные для обновлений.
Если вам нужно сначала синхронизировать все и получить полный список, я предлагаю вам создать таблицу поиска custom-uuid => sugar-id, чтобы вам не приходилось перебирать массив данных и сравнивать поля при поиске определенного числа.
Не забудьте рассмотреть возможность присутствия пользовательского uuid в одном, более чемСахарные записи за раз, если только вы не обеспечите их уникальность на стороне сервера / базы данных.
3)
Теперь, когда у вас есть вся необходимая информация, выможет обновлять и создавать записи по мере необходимости:
Если хотите отправить всеЕсли вы не создаете и / или не обновляете один запрос, взгляните на API POST /rest/v10/bulk
, если он есть в вашей версии Sugar.
Заключительные замечания:
- Определение операторов фильтра на
/rest/v10/help
кажется неполным, для получения дополнительной информации вы можете проверить Документация фильтра