数组映射为资产字段

时间:2018-01-29 15:49:42

标签: javascript arrays blockchain hyperledger hyperledger-composer

我正在使用Hyperledger来定义模型文件。

我有以下基本样本。

asset MyAsset identified by id {
  o String id
  --> MyOwner owner
  o String field1
  o String field2
}

我的目标是替换field1field2(我有许多不同的字段,可以在运行时自定义),使用通用数组映射,例如String{} fields ,在我的脚本文件中作为键/值数组访问。

我该怎么做?

1 个答案:

答案 0 :(得分:-1)

您可以将资产定义为:

asset MyAsset identified by id {
  o String id
  --> Owner owner
  o String[] fields
  o Double balance
}
然后,您将在交易中访问该数组(无论您将其建模为......)

例如(样本)

transaction Trade {
--> Owner owner
--> MyAsset myasset
o Double amount
}

然后在您的资产中访问它,如:

/**
 * Perform a deposit or withdrawal from a bank account
 * @param {org.acme.account.Transfer} txfr
 * @transaction
 */

function execTxfr(txfr) {   
// sample code below

if(txfr.myasset.fields == null) {
    txfr.myasset.fields = [];
}

// do some logic then push to array

txfr.myasset.balance += txfr.amount ;
txfr.myasset.fields.push(txfr); // just pushing the transfer transaction object to your array as an example

// update the asset registry with the new balance and trxn object added to fields

return getAssetRegistry('org.acme.account.MyAsset')
.then(function(registry) {
    return registry.update(txfr.myasset);
    });
}