如何从资产管理日志值?在Hyperledger作曲家中?

时间:2019-04-26 04:44:42

标签: hyperledger blockchain hyperledger-composer

我正在通过Hyperledger作曲家游乐场编写网络。

这里我有一个名为患者的资产,并且患者具有医院的列表, 我有一个名为 GetPatientHospitals 的事务,该事务用于调用函数 getPatientHospitals ,我希望此函数打印出ID列表(例如 resource之类的东西: org.acme.patientchain.PatientHospital#5wyjftthjr (在我测试时), 但是当我测试我的功能时,它只会告诉我我的交易已经提交,没有可以看到输出的地方,有什么办法吗?还是我需要其他资产来存储这些消息?

我的 getPatientHospitals 功能:

function getPatientHospitals(gethospitals){
    return getAssetRegistry('org.acme.patientchain.Patient')
         .then(function (PatientAssetRegistry) {
    // Get the patient asset
        return  PatientAssetRegistry.get(gethospitals.patient.pubKeyPatient);
     })
  .then(function (patienthospital) {
    return patienthospital.hospitals;
  })
} //list of hospitals

我的 GetPatientHospitals 交易和患者资产:

transaction GetPatientHospitals { 
--> Patient patient
}



asset Patient identified by pubKeyPatient {
 o String pubKeyPatient 
--> PatientHospital[] hospitals

}

这是我测试过的患者的医院:

{
  "$class": "org.acme.patientchain.Patient",
  "pubKeyPatient": "1652",
  "hospitals": [
    "resource:org.acme.patientchain.PatientHospital#5wyjftthjr",
    "resource:org.acme.patientchain.PatientHospital#mgnl6ag4vh",
    "resource:org.acme.patientchain.PatientHospital#5wyjftthjr"
  ]
}

我想在

之后打印这些资源或ID

但是我什么地方都看不到输出,我可以在这个操场上“打印”吗?

2 个答案:

答案 0 :(得分:1)

您可以在js文件中使用console.log()。然后,您可以在浏览器开发人员控制台中看到输出。对于Firefox和Chrome,您可以使用 CTRL-SHIFT-I 显示开发者控制台。 仅当您将Playground与“ Web”配置文件一起使用时,此方法才有效,然后您将在浏览器控制台中看到console.log输出。如果您使用Playground连接到本地Fabric实例,则console.log输出将在Chaincode容器的日志中。

尝试使用console.log(patienthospital.hospitals)并在开发人员控制台中检查输出。

答案 1 :(得分:0)

要打印该值,您需要在cto文件中进行一笔交易。

Hyperledger编写器提供交易处理器功能。它可以选择将数据返回到客户端应用程序。这对于将收据退还给交易的提交者或退还交易修改的资产很有用,以避免在交易完成后单独查找资产。数据也可以通过业务网络的事务 REST API 返回到客户端应用程序。

我建议您点击以下链接:

  1. returning data from transaction processor function
  2. composer github

希望它会对您有所帮助:)