javascript - 使用具有参与者关系的交易添加 Assets

标签 javascript hyperledger hyperledger-composer

我正在尝试使用交易添加 Assets ,在该交易中我试图将 Assets 的一个字段与参与者引用相关联。但是当我尝试使用 Assets 获取参与者的姓名时,它显示未定义

参与者已存在。我不想使用此仅交易 Assets 创建新参与者。

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 channel 上被提出和回答

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/

相关文章:

javascript - Webpack 未解析 jsx 文件

Javascript 猜数字游戏 - 设置计数器和 while 循环

load-testing - 尝试在 Hyperledger Fabric 网络中实现高吞吐量

hyperledger - 安装用于 super 账本结构节点设置的 cryptogen 工具的步骤?

hyperledger-fabric - "channel [{channel-name}]: MSP error: channel doesn' t exist”警告无法在 Hyperledger Fabric 上实例化链代码

hyperledger-fabric - 弃用 Hyperledger Composer 的原因是什么?

javascript - 替换行的内容(在 ace.editor 中)并覆盖它

javascript - 如何在 UIWebview 中启用 JavaScript

blockchain - super 账本 Composer : No business network has been specified for this connection

go - 如何将我的链码从本地转换为 super 账本结构中的对等体?