MemoryRecord库中的resolveReferences方法可以解析当前表格中引用其他表格的数据。该方法遍历当前表格中的每一条记录,并获取该记录所引用的其他表格记录的数据。然后将这些数据填充到当前记录中,以便于用户在查询当前表格数据时,可以一并获取到原始表格数据。
方法定义:
resolveReferences(): void
使用说明:
用户需要保证当前表格中引用的其他表格数据已经成功加载,否则该方法将无法正常执行。
调用resolveReferences方法时,需要确保已经从其他表格获取到了数据,否则可能会出现数据不完整的情况。
调用resolveReferences方法时,会触发当前表格中每个记录的on_resolve_references事件,用户可以监听这个事件,进行自定义的处理逻辑。
// 创建一个表格实例
const table = new MemoryTable([
{id: '1', name: 'Alice', group: '1'},
{id: '2', name: 'Bob', group: '1'},
{id: '3', name: 'Charlie', group: '2'},
{id: '4', name: 'David', group: '2'},
]);
// 创建另一个表格实例
const groups = new MemoryTable([
{id: '1', label: 'Group A'},
{id: '2', label: 'Group B'},
]);
// 设置table中的group字段引用groups表格的id字段
table.setReference('group', groups, 'id');
// 加载groups表格数据
groups.load();
// 解析table中的引用
table.resolveReferences();
// 获取解析后的table数据
const data = table.getData();
console.log(data);
// 在on_resolve_references事件中自定义解析逻辑
table.on_resolve_references = (record, references) => {
record.group_name = groups.getDataById(references.group).label;
};
在resolveReferences方法调用后,如果需要手动修改当前表格中的记录内容,需要使用内部方法_set
,而不要直接修改记录对象,否则可能会导致解析结果不正确。
在resolveReferences方法中,如果遇到多级引用的情况,需要确保所有引用的数据都已经加载完成,并且resolveReferences方法也已经调用完毕,否则可能会出现数据不完整的情况。