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/>';
}
}
}