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

问题描述 投票:1回答:1

在我的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()
 };
javascript split hyperledger-composer
1个回答
1
投票

因为它是一个资源。您可能会将其转换为String(然后拆分将在字符串对象上可用 - 但您仍然需要删除(转换的资源的)尾随字符)。

有一种更好的方式 - 像:

 trxn.newConsultants.forEach((consultantRef) => {
  console.log("identifier is " + consultantRef.getIdentifier());
  });

getIdentifier()在Composer API文档中描述。

© www.soinside.com 2019 - 2024. All rights reserved.