Salesforce: getId() in Database.SaveResult

需求:

在保存一组数据之后,希望可以收集报错数据的Id以及报错信息。

初始代码:

String errors = '';
List<Database.SaveResult> results = Database.update(updatedAccounts, false);
checkUpdatedResults(results);
private void checkUpdatedResults(List<Database.SaveResult> results) {
  for (Database.SaveResult result : results) {
    if (!result.isSuccess()) {
      errors += result.getId() + ': ' + result.getErrors() + '<br/>';
    }
  }
}

该代码result.getId() 得到的结果为null, 并不能获取报错数据的Id

经查询相关文档发现,getId() 方法只能收集保存成功的数据的Id, 若数据保存失败,则只会返回null

所以如果想要收集报错数据的Id, 代码修改如下:

String errors = '';
List<Database.SaveResult> results = Database.update(updatedAccounts, false);
checkUpdatedResults(updatedAccounts, results);
private void checkUpdatedResults(List<Account> updatedAccounts, List<Database.SaveResult> results) {
  for (Integer i = 0; i < updatedAccounts.size(); i++) {
    Database.SaveResult result = results[i];
    if (!result.isSuccess()) {
      errors += updatedAccounts[i].Id + ': ' + result.getErrors() + '<br/>';
    }
  }
}

posted @ 2021-04-22 17:36  Clsriz  阅读(134)  评论(0编辑  收藏  举报