Palantir Foundry:TS函数中两个对象无法建立链接问题
Palantir Foundry TS编辑函数链接对象报错解决
问题描述
按照Palantir Foundry文档示例编写TS编辑函数,尝试建立对象A和B的链接,代码如下:
@Edits(A,B) @OntologyEditFunction() private Link_to_B(a:A,b:B):void{b.A.clear(), a.B.set(b);}
执行时触发错误:
Error Parameters: {} TypeError: r.map is not a function at Function.convertToPhonographTypeV2 (FunctionsFunctionsIsolateRuntimePackagePackage:84:22866) at t.TypeConvertingPropertyStore.convertToPhonographType (FunctionsFunctionsIsolateRuntimePackagePackage:371:6237) at t.TypeConvertingPropertyStore.set (FunctionsFunctionsIsolateRuntimePackagePackage:371:5997) at t.DefaultObjectStorageProvider.setPropertyValue (FunctionsFunctionsIsolateRuntimePackagePackage:100:35623) at t.DefaultObjectStorageProvider.addSingleKeyLink (FunctionsFunctionsIsolateRuntimePackagePackage:100:38897) at t.DefaultObjectStorageProvider.setSingleKeyLink (FunctionsFunctionsIsolateRuntimePackagePackage:100:38627) at Object.set (FunctionsFunctionsIsolateRuntimePackagePackage:100:37746) at Object.set (FunctionsFunctionsIsolateRuntimePackagePackage:331:10356) at Object.set (FunctionsFunctionsIsolateRuntimePackagePackage:334:1414) at Object.set (FunctionsFunctionsIsolateRuntimePackagePackage:334:4108)
已确认链接类型存在,但无法完成对象赋值。
解决方法
1. 检查链接基数匹配性
报错核心原因是代码操作的方法与Ontology中定义的链接基数不兼容:
- 若
a.B是多值链接(0..n/1..n),不能用set(b),需替换为add(b); - 若
b.A是单值链接(0..1/1..1),不能用clear(),需替换为set(null)。
2. 修正示例代码
根据实际链接基数调整代码,示例如下:
@Edits(A, B) @OntologyEditFunction() private Link_to_B(a: A, b: B): void { // 若b.A是多值链接用clear()清空;单值链接则用set(null) b.A.clear(); // 若a.B是单值链接用set(b),多值链接用add(b) a.B.set(b); }
3. 验证Ontology链接配置
进入Foundry Ontology界面,确认:
- 对象A的
B链接基数(单值/多值); - 对象B的
A链接基数(单值/多值);
确保代码调用的方法(set/add/clear/set(null))与基数对应。
4. 检查参数有效性
调用编辑函数时,确认传入的a和b均为有效的Ontology对象实例,无空值或未加载完成的情况。
内容的提问来源于stack exchange,提问作者H0peuless
相关产品推荐
相关产品推荐

