Hyperledger-Composer: не в состоянии получить доступ к javaScript split () - функция из функции процессора транзакций - PullRequest
0 голосов
/ 03 сентября 2018

В своем приложении для составления гипертелеров я добавил программный контроль доступа к функции процессора транзакций (в файле 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"

Для уточнения:

action.newConsultants - это массив следующего типа:

["resource: org.comp.app.Consultant # id1", "resource: org.comp.app.Consultant # id2", "Ресурс: org.comp.app.Consultant # id3"]

Я хочу получить идентификатор соответствующих консультантов (например, «id1»).

Согласно документам (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split), функция разделения существует.

Но это не работает.

Как я могу получить идентификаторы консультантов?


UPDATE:

Когда я смотрю на атрибуты транзакции в консоли, я вижу следующее для атрибута "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()
 };

1 Ответ

0 голосов
/ 03 сентября 2018

потому что это ресурс. Скорее всего, вы преобразуете его в строку (тогда разделение будет доступно для строкового объекта - но вам все равно придется удалить завершающие символы (из преобразованного ресурса)).

Есть лучший способ - попробуйте что-то вроде:

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

getIdentifier() описано в документации по Composer API.

...