0

我的链码中有 2 个参与者和 1 个交易来更改 1 个资产的所有权。
.cto文件

asset Product identified by productId{
o String productId
--> User owner
}

abstract participant User {}

participant Buyer identified by buyerId extends User {
o String buyerId
} 

participant Seller identified by sellerId extends User {
o String sellerId
}
transaction changeOwner {
--> User user
--> Product product
} 

//script.js
async function change(tx) {
tx.product.owner = tx.user;
}'

我面临的问题是,当我在作曲家操场上测试它时,我可以像这样编辑事务

“所有者”:“资源:org.example.basic。买家#buyer1”,“所有者”:“资源:org.example.basic。卖家#seller1”

如果我按照这种方式,链码工作正常,但是
当我生成它的角度骨架并赋予价值时,它看起来像这样

"owner": "resource: org.example.basic.User # buyer1 " 即使在 API 中,它也占用了User

如何确保它发送正确的命名空间或正确的用户?

4

1 回答 1

0

Composer Playground 对您提供的内容进行建模,并为建模的资产、参与者或交易等提供建议的 JSON。归根结底,它只是一个 Playground。

您需要将资源类传递给您的事务函数,而不是抽象类User(它不是存储或可以检索对象的资源注册表)。

因此,您的交易可能应该是(基于产品所有者(“所有者”)只能“出售”资产:-)):

asset Product identified by productId{
  o String productId
  --> Seller owner
}

transaction changeOwner {
  --> Product product
  --> Buyer newOwner
}

以及基于您当前模型的交易:

//script.js
async function change(tx) {
tx.product.owner.sellerId = tx.newOwner.buyerId;
}

你应该在你的 Angular 应用中看到同样的东西。

于 2018-09-27T11:48:20.603 回答