我有一个资产注册表。我需要添加一个新资产,然后更新注册表。资产是一种分配,您可以将值从一个发送到另一个。如果接收资产不存在,则使用分配的新值创建,然后从发送资产中获取该值。当我通过事务.js修改了所有资产并且我想更新注册表时,我这样做:
if(exists==false){
return getAssetRegistry('org.basetis.bonusetis.apportionment')
.then(function (apportionmentRegistry) {
return apportionmentRegistry.addAll([apportionment1]);
})
.then(function () {
return getAssetRegistry('org.basetis.bonusetis.apportionment');
})
.then(function (apportionmentRegistry) {
return apportionmentRegistry.updateAll(apportionments);
})
如果我调试,则通过addAll添加新创建的资产,但是当它尝试使用updateAll更新它时,它会给我一个错误,说明新添加的资产不存在。如果我删除updateAll函数,则会添加新资产。 如果之前在代码中添加了资产,为什么无法更新资产?代码有什么问题吗?
答案 0 :(得分:2)
在Hyperledger Fabric(Hyperledger Composer当前正在使用)中,您无法从事务中读取自己的写入,这意味着您无法在同一事务中向注册表添加内容然后读取它。
答案 1 :(得分:1)
事务处理器功能将失败并回滚任何更改 已经犯了错误。整个交易失败,而不仅仅是 事务处理以及事务更改的任何内容 发生错误之前的处理器功能将被回滚。
来自:https://hyperledger.github.io/composer/reference/js_scripts.html