我在基于JS / Node的链码中使用以下依赖项:
- “ fabric-contract-api”:“〜1.4.0”,
- “ fabric-shim”:“〜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中没有引发执行或返回错误。我没有发现任何代码示例,还有进一步的错误处理:https://fabric-shim.github.io/release-1.4/index.html
所以问题是如何使用基于JS / Node的链码捕获事务错误?
非常感谢您!