我正在尝试使用一项交易添加资产,在该交易中我试图将资产的一个字段与参与者参考相关联。但是,当我尝试使用资产获取参与者的姓名时,它向我显示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

还有其他方法吗?

最佳答案

在Rocket.Chat频道上也提出并回答了这个问题

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

但是这里是摘要:

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

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

您可以使用getParticipantRegistry编写代码来检查参与者是否在场

关于javascript - 使用具有参与者关系的交易添加 Assets ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47904553/

10-16 23:46