как изменить пространство имен в соответствии с участником? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть 2 участника в коде моей цепочки и 1 транзакция для смены владельца 1 актива.
.cto file

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. Покупатель # покупатель1", "владелец":"resource: org.example.basic. Продавец # seller1"

Если я пойду по этому пути, код цепи будет работать нормально, но
Когда я создаю его угловой скелети давая значение, оно выглядит так:

"владелец": "ресурс: org.example.basic. пользователь # покупатель1" даже в API, он принимает пользователя

как я могу убедиться, что он отправляет правильное пространство имен или правильный пользователь ??

1 Ответ

0 голосов
/ 27 сентября 2018

Composer игровая площадка моделирует то, что вы предоставляете, и дает рекомендуемый JSON для смоделированного актива, участника или транзакции и т. Д. Это просто игровая площадка в конце дня.

Вам необходимо передать ресурс класс в вашей функции транзакции, а не абстрактный класс 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.

...