如何使用交易更改资产属性的值?

时间:2019-01-04 07:06:48

标签: javascript hyperledger-fabric hyperledger hyperledger-composer

我正在Hyperledger作曲家游乐场工作。我有一项资产,其中包含客户的详细信息:

{
    "$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”属性的值。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

有一些简单的示例事务可以更新Composer Samples中的单个字段。

交易网络示例中的“交易”交易,信用证网络中的“拒绝”交易。

您可以从GitHub或使用Composer online playground中找到示例。

如果您是Composer的新手,建议您通过Composer Tutorials page浏览Playground教程和Developer教程。

答案 1 :(得分:0)

首先,您需要获取资产的registry

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

现在通过ID get出售资产:

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

更改属性并保存资产:

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

请注意getupdate都是异步函数,因此请在await函数中使用async或使用Promise.then语法,例如< / p>

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