使用与参与者关系

时间:2017-12-20 11:03:25

标签: javascript hyperledger hyperledger-composer

我正在尝试使用交易添加资产,我试图将其中一个资产的字段与参与者引用相关联。但是,当我试图通过资产获取参与者的名称时,它会显示undefined

参与者已经存在。我不想使用此仅限交易资产创建新参与者。

asset TestAsset identified by id {
  o String id
  --> TestPart part
}

participant TestPart identified by id {
  o String id
  o String name
}

transaction AddTestAsset {
  o String aId
  o String pId
}

Logic.js

function addTestAsset(tx) {
  var factory = getFactory();
  var NAMESPACE = 'org.acme';
  var newAsset = factory.newResource(NAMESPACE, 'TestAsset', tx.aId);
  newAsset.part = factory.newRelationship(NAMESPACE, 'TestPart', tx.pId);
  console.log(newAsset.part.name); //Showing undefined
  return getAssetRegistry(NAMESPACE + '.TestAsset')
        .then(function (aReg) {
            return aReg.add(newAsset);
        });

我从UI表单中获取aIdpId

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

此问题也在Rocket.Chat频道上被提问和回答

https://chat.hyperledger.org/channel/composer

但这是摘要:

使用console.log(newAsset.part.name);语句时,name元素未定义,因为参与者关系尚未解析。如果您使用console.log(newAsset.part);,您将看到它是一个关系对象,而不是参与者。

可以为不存在的参与者创建关系。这里的设计是您可能无法通过ACL限制“查看”参与者,因此您可以创建关系。

您可以使用getParticipantRegistry

编写代码来检查参与者的存在