如何使用 txID Hyperledger fabric 获取数据(状态)
How to get data (state) using txID Hyperledger fabric
async createEntity(ctx, entityNumber, entityType, data) {
const entity = {
data,
};
await ctx.stub.putState(entityType + entityNumber, Buffer.from(JSON.stringify(entity)));
return ctx.stub.getTxID();
}
chaincode中有这样的代码,例如我得到的响应
612d6a6b5919fbc511e7a7b691cd349eb932f4e8d84ab9394885d3220f2e169a
在那里写下了一些信息,问题是,我如何使用收到的 txId 取回这些数据?
使用 getState
,如您所料:https://hyperledger.github.io/fabric-chaincode-node/release-2.0/api/fabric-shim.ChaincodeStub.html#getState__anchor。
一种解决方法是将您作为 ctx.stub.getTxID() 的 return 值获得的交易 ID 与您使用 getHistoryForKey(entityType + entityNumber) 获得的所有交易 ID 进行比较。而 txnid 中的 match 显然是你想要的数据(状态)。
但这仍然是一个繁琐的过程。如果您找到仅使用 txnId 获取数据的直接方法,请 post。如果有这样的东西,那将是一种享受。
ctx.stub.GetState 和 ctx.stub.PutState 这些函数将状态写入 levelDB。如果您想通过 txID 访问您的数据,我使用的一种解决方法是针对该 txID 存储数据。即
let txID = ctx.stub.getTxID();
await ctx.stub.putState(txID, Buffer.from(JSON.stringify(entity)));
async createEntity(ctx, entityNumber, entityType, data) {
const entity = {
data,
};
await ctx.stub.putState(entityType + entityNumber, Buffer.from(JSON.stringify(entity)));
return ctx.stub.getTxID();
}
chaincode中有这样的代码,例如我得到的响应
612d6a6b5919fbc511e7a7b691cd349eb932f4e8d84ab9394885d3220f2e169a
在那里写下了一些信息,问题是,我如何使用收到的 txId 取回这些数据?
使用 getState
,如您所料:https://hyperledger.github.io/fabric-chaincode-node/release-2.0/api/fabric-shim.ChaincodeStub.html#getState__anchor。
一种解决方法是将您作为 ctx.stub.getTxID() 的 return 值获得的交易 ID 与您使用 getHistoryForKey(entityType + entityNumber) 获得的所有交易 ID 进行比较。而 txnid 中的 match 显然是你想要的数据(状态)。
但这仍然是一个繁琐的过程。如果您找到仅使用 txnId 获取数据的直接方法,请 post。如果有这样的东西,那将是一种享受。
ctx.stub.GetState 和 ctx.stub.PutState 这些函数将状态写入 levelDB。如果您想通过 txID 访问您的数据,我使用的一种解决方法是针对该 txID 存储数据。即
let txID = ctx.stub.getTxID();
await ctx.stub.putState(txID, Buffer.from(JSON.stringify(entity)));