“错误:无法找到任何要执行的事务”

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

我正在构建一个网络,允许“医院”将他们的公钥和数据加入到“患者”资产中的阵列中,但是当我测试时它给了我

错误:找不到要为事务执行的任何函数

我正在使用在线作曲家游乐场,这是我第一次建立一个网络。我认为在这个网络中,我需要参与者,资产和交易,我将患者设置为一系列医院的资产,而PatientHospital是具有数据哈希和公钥,事务以及通过此事务调用的函数的参与者,我不知道哪里出错,但是当我测试时,它返回错误信息:

“TypeError:无法读取未定义的属性'state'

“错误:无法找到要为事务执行的任何函数> org.acme.patientchain.AddHospitalToPatient#bdd6ca0b-d0d9-4003-b6c3-05b818b3fc96”

我也尝试将PatientHospital设置为资产而不是参与者,但仍然给出了同样的错误。

我该如何解决这个问题?

我的model.cto文件:

namespace org.acme.patientchain
 asset Patient identified by pubKeyPatient {
  o String pubKeyPatient
  o PatientHospital[] hospitals
}

participant PatientHospital identified by pubKeyHospital {
  o String pubKeyHospital
  o String dataHash
 // --> Hospital hospital
}

transaction AddHospitalToPatient {
  --> Patient patient
  o PatientHospital newHospital

 }

My js文件中的函数:

function addHospitalToPatient(AddHospitalToPatient){
 AddHospitalToPatient.patient.hospitals.push(AddHospitalToPatient.newHospital);
  return getAssetRegistry('org.acme.patientchain.Patient')
  .then(function (assetRegistry) {
    return assetRegistry.update(patient.hospitals);
  });

}
hyperledger-fabric hyperledger blockchain hyperledger-composer
1个回答
0
投票

根据我的理解,您需要使用Patient参与者的新值更新PatientHospital资产。

logic.js更改:

async function addHospitalToPatient(AddHospitalToPatient){
 AddHospitalToPatient.patient.hospitals.push(AddHospitalToPatient.newHospital);
  return getAssetRegistry('org.acme.patientchain.Patient')
  .then(function (assetRegistry) {
    return assetRegistry.update(AddHospitalToPatient.patient);
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.