在我的hyperledger作曲家应用程序中,我向事务处理器函数添加了一些编程访问控制(在文件logic.js中)。
我添加的一行代码抛出一个错误:
这是代码行:
for (consultantRef of transaction.newConsultants) {
//the following line of code does NOT work:
let consultantId = consultantRef.split('#')[1];
在控制台中,我收到以下错误消息:
"transaction returned with failure: TypeError: consultantRef.split is not a function"
为了澄清:
transaction.newConsultants是以下类型的数组:
[“resource:org.comp.app.Consultant#id1”,“resource:org.comp.app.Consultant#id2”,“resource:org.comp.app.Consultant#id3”]
我想得到各自顾问的身份证明(例如“id1”)。
根据文档(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split),存在分裂函数。
但它不起作用。
我怎样才能得到顾问的ids?
更新:
当我在控制台中查看事务的属性时,我看到属性“newConsultants”的以下内容:
newConsultants: Array (1)
0 "resource:org.comp.app.Consultant#[email protected]_1535655902439"
Array Prototype
澄清:事务是一个对象,即以下(从角度前端复制):
this.transaction = {
$class: 'org.comp.app.AddToConsultantsOfProject',
'project': 'resource:org.comp.app.project#' + this.projectId,
'newConsultants': this.selectedConsultants,
'timestamp': new Date().getTime()
};
因为它是一个资源。您可能会将其转换为String(然后拆分将在字符串对象上可用 - 但您仍然需要删除(转换的资源的)尾随字符)。
有一种更好的方式 - 像:
trxn.newConsultants.forEach((consultantRef) => {
console.log("identifier is " + consultantRef.getIdentifier());
});
getIdentifier()
在Composer API文档中描述。