Hyperledger Composer:无法从事务处理器函数中访问javaScript split()-函数
在我的hyperledger composer应用程序中,我向文件logic.js中的事务处理器函数添加了一些编程访问控制 我添加的其中一行代码引发错误: 以下是代码行:Hyperledger Composer:无法从事务处理器函数中访问javaScript split()-函数,javascript,split,hyperledger-composer,Javascript,Split,Hyperledger Composer,在我的hyperledger composer应用程序中,我向文件logic.js中的事务处理器函数添加了一些编程访问控制 我添加的其中一行代码引发错误: 以下是代码行: for (consultantRef of transaction.newConsultants) { //the following line of code does NOT work: let consultantId = consultantRef.split('#')[1]; 在控制台中,我收到以下错误
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是以下类型的数组:
[资源:org.comp.app.Consultantid1,资源:org.comp.app.Consultantid2,
资源:org.comp.app.Consultantid3]
我想获得各自顾问的id,例如id1
根据文档,拆分功能确实存在
但它不起作用
我如何获得顾问的身份证
更新:
当我在控制台中查看事务的属性时,我看到属性newConsultants的以下内容:
newConsultants: Array (1)
0 "resource:org.comp.app.Consultant#john.doe@gmail.com_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对象上就可以使用split,但是您仍然需要删除转换的资源的尾随字符 有一个更好的方法-尝试以下方法:
trxn.newConsultants.forEach((consultantRef) => {
console.log("identifier is " + consultantRef.getIdentifier());
});
getIdentifier在Composer API文档中进行了描述。您是否可以在LoopThreaded中记录并共享consultantRef值?在我这里,如果您所说的是transaction.newConsultants的值,那么它应该可以正常工作。是否可以打印事务。请确定事务是变量名称的对象还是部分?我已将newConsultants密钥插入到名为transaction的对象中,但未收到此类错误消息。@Suresh Prajapati:我无法记录该值。。。无法从hyperledger composer交易处理器内部访问控制台功能Split不起作用,因为consultantRef不是字符串,它将是一个资源对象,因为它们已被解析。