Hyperledger Composer:无法从事务处理器函数中访问javaScript split()-函数

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]; 在控制台中,我收到以下错误

在我的hyperledger composer应用程序中,我向文件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是以下类型的数组:

[资源: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不是字符串,它将是一个资源对象,因为它们已被解析。