Разница между jsforce массовыми параметрами API

Я использую jsforce для доступа к Salesforce с помощью API. У него есть два способа обновления и удаления записей. Один из них использует обычный пакет API, что означает создание задания и пакетов:

var job = conn.bulk.createJob("Account", "delete");
var batch = job.createBatch();
var accounts = getAccountsByDate(jsforce.Date.TODAY);
batch.execute(accounts);

batch.on('response', function(rets) {
    // do things
});

Другой способ заключается в использовании интерфейса запроса:

conn.sobject('Account')
    .find({ CreatedDate: jsforce.Date.TODAY })
    .destroy(function(err, rets) {
        // do things
    });

Второй способ, конечно, кажется более простым, но я не могу заставить его обновлять или удалять более 10000 записей за раз, что, по-видимому, является пределом API продаж Salesforce для размера пакета. Обратите внимание, что с помощью maxFetch собственность от jsforce кажется, не имеет никакого эффекта в этом случае.

Так можно ли предположить, что интерфейс стиля запроса создает только один пакет? Документация jsforce не ясна по этому вопросу.

1 ответ

Решение

В настоящее время метод bulk.load() в массовом интерфейсе API JSforce создает задание с одним пакетом, поэтому будет применяться ограничение в 10000 на пакет. Это также верно при использовании интерфейса поиска-и-уничтожения, который внутренне использует bulk.load(). Чтобы избежать этого ограничения, вы можете создать задание с помощью bulk.createJob() и создать несколько пакетов с помощью job.createBatch(), а затем отправить записи для удаления в эти пакеты, чтобы каждая запись не превышала ограничение.

Другие вопросы по тегам