jsforce批量api选项之间的区别

时间:2018-06-05 21:07:34

标签: javascript salesforce bulk jsforce

我使用jsforce使用批量API访问salesforce。它有两种更新和删除记录的方法。一个是使用正常的批量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
    });

第二种方式当然似乎更容易,但我无法一次更新或删除超过10,000条记录,这似乎是一个salesforce api limit on batch size。请注意,使用maxFetch中的jsforce属性似乎在这种情况下无效。

因此可以安全地假设查询样式界面只创建一个批处理? jsforce documentation目前尚不清楚。

1 个答案:

答案 0 :(得分:2)

目前,JSforce bulk api中的bulk.load()方法会生成一个批处理作业,因此将应用每批10,000个限制。使用find-and-destroy接口时也是如此,该接口在内部使用bulk.load()。 要避免此限制,您可以通过bulk.createJob()创建作业,并通过job.createBatch()创建多个批次,然后将记录分发到这些批次中,以便每个记录不会超出限制。