添加和更新资产

时间:2017-07-05 11:02:58

标签: hyperledger-composer

我有一个资产注册表。我需要添加一个新资产,然后更新注册表。资产是一种分配,您可以将值从一个发送到另一个。如果接收资产不存在,则使用分配的新值创建,然后从发送资产中获取该值。当我通过事务.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函数,则会添加新资产。 如果之前在代码中添加了资产,为什么无法更新资产?代码有什么问题吗?

2 个答案:

答案 0 :(得分:2)

在Hyperledger Fabric(Hyperledger Composer当前正在使用)中,您无法从事务中读取自己的写入,这意味着您无法在同一事务中向注册表添加内容然后读取它。

答案 1 :(得分:1)

保罗是对的。而且我认为这有关于在交易成功之前新资产如何不完全致力于注册管理机构的事情:

  

事务处理器功能将失败并回滚任何更改   已经犯了错误。整个交易失败,而不仅仅是   事务处理以及事务更改的任何内容   发生错误之前的处理器功能将被回滚。

来自:https://hyperledger.github.io/composer/reference/js_scripts.html