首页 > 解决方案 > Hyperledger Fabric 中的资产历史

问题描述

我正在使用 node.js 编写链代码,我想了解药品供应链中药物的历史。我部署了链代码,调用了制造和购买合同,将药物的当前状态从一个所有者修改为另一个所有者。事实上,我只是为此修改了商业票据链代码。所有者的更改反映在 couchdb 数据库中。但是,当我尝试通过药物键获取药物历史时,它并没有按预期工作。

我使用的代码


const promiseOfIterator = this.ctx.stub.getHistoryForKey(drugKey);
const results = [];
for await (const keyMod of promiseOfIterator) {
            
            const resp = {
                timestamp: keyMod.timestamp,
                txid: keyMod.tx_id
            }
            if (keyMod.is_delete) {
                resp.data = 'KEY DELETED';
            } else {
                resp.data = keyMod.value.toString('utf8');
            }
            results.push(resp);
        }
return results;

当我打印结果时,它给出:[] 当我这样做时:Drug.fromBuffer(getDrugHistoryResponse);并打印它,它给出Drug { class: 'org.medicochainnet.drug', key: ':', currentState: null }

如何使这项工作?我在这里做错了什么?请帮我。

标签: node.jshyperledger-fabricblockchainsmartcontractshyperledger-chaincode

解决方案


功能

ctx.stub.getHistoryForKey(drugKey); 

是一个异步函数。所以你需要添加等待

const promiseOfIterator = await this.ctx.stub.getHistoryForKey(drugKey);

然后你可以迭代结果。


推荐阅读