如何使用资产ID在Hyperledger Composer中获取资产历史记录?

时间:2019-04-02 15:17:06

标签: hyperledger-fabric hyperledger-composer

我有一个在Hyperledger Composer中创建的资产,我想使用资产ID获取资产的交易历史记录。

similar question中建议的解决方法之一是向每个对资产进行更改的交易发送事件,然后根据发出的事件查询历史记录。

这是我的意思

// transaction that is going to make changes to the asset
transaction ModifyAsset{
 o String assetId
}

// event
event ModifyAssetEvent {
 o Asset asset
 o String assetId
}

// queries  the historian record
query searchProductHistory {
  description: "search product by serial number"
  statement: 
    SELECT org.hyperledger.composer.system.HistorianRecord
    WHERE (eventsEmitted[0].assetId == $assetId)
} 

这本来是很理想的,但不幸的是Hyperledger作曲家不能允许这样的查询。

高度赞赏我可以使用的其他解决方案

提前谢谢。

2 个答案:

答案 0 :(得分:0)

也许您进行查询以仅返回具有特定资产ID的交易有效。

类似的东西:

let q1 = businessNetworkConnection.buildQuery(
'SELECT org.hyperledger.composer.system.HistorianRecord'
 + 'WHERE (transactionId == assetId)'
);   

答案 1 :(得分:0)

我不好,但也许像

transaction.transactionInvoked.eventsemitted.asset == assetName

也许可行。