我正在测试hyperledger中的关系。
我的模型文件有一个事务myTransaction
,它与使用from
变量的帐户有关系。
此from
(帐户)与资产中使用accountholder
的AccountHolder有关系
/*
* My first BlockChain Application
*/
namespace org.bahrain.rashidbank
asset Account identified by accountId {
o String accountId
o Double balance
-- > AccountHolder accountholder
}
participant AccountHolder identified by accountholderId {
o String accountholderId
o String additionaldata
}
transaction myTransaction {
-- > Account from
o Double somenumber
o String additionaldataa
o String accountholderID
}
我的Javascript脚本文件正在尝试使用事务对象balance
additionaldata
和rashidtransaction
/*
* @param {org.bahrain.rashidbank.myTransaction} rashidtransaction
* @transaction
*/
function anyfunctionname(rashidtransaction) {
console.log("Passed Parameters", rashidtransaction);
rashidtransaction.from.balance = rashidtransaction.somenumber;
rashidtransaction.from.accountholder.accountholderId = rashidtransaction.accountholderID;
rashidtransaction.from.accountholder.additionaldata = rashidtransaction.additionaldataa;
return getAssetRegistry('org.bahrain.rashidbank.Account')
.then(function(assetregistry) {
return assetregistry.update(rashidtransaction.from);
})
}
以下是我在测试页面中创建的交易。 但抛出以下错误
t: Instance org.bahrain.rashidbank.Account#Rashid missing required field accountholder
问题:为什么我无法更新同一交易中的AccountHolder.additionaldata
参与者。
答案 0 :(得分:1)
首先,我不认为您可以在更新资产时更改唯一ID。首先,您必须删除该资源并使用该唯一ID创建新资源。
要回答您的问题,为了更新帐户持有人资源,您必须更新自己的注册表,即您还必须更新帐户注册表,如下所示:
/**
* @param {org.bahrain.rashidbank.myTransaction} rashidtransaction
* @transaction
*/
async function anyfunctionname(rashidtransaction) {
let assetReg = await getAssetRegistry('org.bahrain.rashidbank.Account')
let participantReg = await getParticipantRegistry('org.bahrain.rashidbank.AccountHolder')
rashidtransaction.from.balance = rashidtransaction.somenumber;
rashidtransaction.from.accountholder.additionaldata = rashidtransaction.additionaldataa;
await assetReg.update(rashidtransaction.from)
await participantReg.update(rashidtransaction.from.accountholder)
}