【发布时间】:2019-11-14 15:22:58
【问题描述】:
我在基于 JS/Node 的链代码中使用以下依赖项:
- "fabric-contract-api": "~1.4.0",
- “织物垫片”:“~1.4.0”
查询我的分类帐。代码如下所示:
'use strict';
const { Contract } = require('fabric-contract-api');
const shim = require('fabric-shim');
...
class ThingsChainCode extends Contract {
async queryThing(ctx, id) {
const thingAsBytes = await ctx.stub.getState(id);
if (!thingAsBytes || thingAsBytes.length === 0) {
throw new NotFoundError(`${id} does not exist`);
}
return thingAsBytes.toString('utf8');
}
async updateThing(ctx, id, jsonData) {
await ctx.stub.putState(id, Buffer.from(jsonData));
var succMesg = `${id} updated`;
retVal = shim.success(succMesg);
}
}
不幸的是,状态验证器有时(当一批中存在并发读/写时)事务被标记为无效。原因代码状态为“MVCC_READ_CONFLICT”。此时的问题是不是这些错误的原因是什么。相反,我想捕捉错误。在基于 go 的链码中,这似乎很简单:Hyperledger Fabric Chaincode throws MVCC_READ_CONFLICT
在 JS 中没有抛出 execption 或返回错误。我没有发现任何代码示例是否有进一步的错误处理:https://fabric-shim.github.io/release-1.4/index.html
那么问题是如何使用基于 JS/Node 的链码捕获交易错误?
非常感谢!
【问题讨论】:
标签: node.js hyperledger-fabric hyperledger