Как обработать смещение больше 2000 в SOQL без сортировки по ID или дате с помощью Salesforce Rest API - PullRequest
0 голосов
/ 04 июня 2019

Сейчас я работаю над тем, чтобы перевести сайт с базы данных Oracle на Salesforce.Для запроса данных мы используем последнюю версию API Salesforce rest.Сейчас я сталкиваюсь с проблемой разбивки на страницы результатов со смещением больше 2000. Я видел довольно много вопросов по этой теме, но ни один из них, похоже, не подходит к моей проблеме.

Итак, вот ограничения

  • Мне нужно получить результаты по фрагментам из 20 записей (это размер страницы).Я не могу просто получить кучу результатов, а затем выполнить ручную нумерацию страниц, потому что это будет выходить за рамки проекта.
  • Я не могу сделать что-то вроде WHERE ID > lastIdIntheResults LIMIT 20, потому что мне нужно отсортировать результаты по Имени, а сортировка по ИД нарушит порядок, который ожидает клиент.
  • Необходимо сделать с помощью REST API.Я не думаю, что есть способ использовать функцию queryMore в REST API.

Итак, у вас есть предложения?

Спасибо

1 Ответ

2 голосов
/ 04 июня 2019

REST API эквивалентен SOAP API queryMore в ответе done: false и nextRecordsUrl: ....

https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm

Вот мои данные, запрошенные с помощью https://workbench.developerforce.com-> Утилиты -> Проводник покоя:

Workbench showing REST API explorer with

И тогда следующий будет

enter image description here

И чтобы изменить «размер куска» без LIMIT / OFFSET, вы можете использовать HTTP-заголовок: Sforce-Query-Options: batchSize=200

...