首页 > 解决方案 > 如何使用事务更改资产属性的值?

问题描述

我正在研究超级账本作曲家游乐场。我有一个包含客户详细信息的资产:

{
    "$class": "org.example.empty.userData",
    "id": "3890",
    "Name": "Ramesh",
    "Data": [
        "disease",
        "some more disease"
    ],
    "category": "Health",
    "Mobile": "8698617174",
    "timestamp": "2019-01-03T11:26:50.915Z",
    "AllowRead": false,
    "Ecosystem": "resource:org.example.empty.Ecosystem#7758",
    "Addsup": "resource:org.example.empty.Addsup#2534"
}

现在,我想通过事务函数更改“AllowRead”属性的值。

我该怎么做?

标签: javascripthyperledger-fabrichyperledgerhyperledger-composer

解决方案


首先,您需要获取资产的注册表:

const registry = await getAssetRegistry('org.example.empty.userData');

现在通过 ID获取资产:

const asset = await registry.get('3890');

更改属性并保存资产:

asset.AllowRead = true;
await registry.update(asset);

注意getupdate都是异步函数,所以要么awaitasync函数中使用,要么使用Promise.then语法,例如

getAssetRegistry('org.example.empty.userData')
    .then(registry => registry.get('3890'))
    .then(asset => {
        asset.AllowRead = true;
        return asset;
    })
    .then(asset => registry.update(asset));

如果要更改测试中的属性,请使用注册表工厂访问注册表:

const factory = businessNetworkConnection.getBusinessNetwork().getFactory();
const registry = await factory.getAssetRegistry('org.example.empty.userData'); // etc

推荐阅读