添加和更新资产
Adding and updating Assets
我有一个包含资产的注册表。我需要添加新资产,然后更新注册表。资产是一种分配,您可以在其中将一个值从一个发送到另一个。如果接收资产不存在,则会使用分配的新值创建它,然后是从发送资产中获取的值。当我通过事务 .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 函数,新资产就会被添加。
如果之前在代码中添加了资产,为什么它无法更新资产?代码有什么问题吗?
在 Hyperledger Fabric(Hyperledger Composer 当前正在使用的)中,您无法从事务中读取自己的写入,这意味着您无法在同一事务中向注册表添加内容然后再读取它。
保罗是对的。而且我认为这与交易成功之前新资产如何没有真正完全提交到注册表有关:
Transaction processor functions will fail and roll back any changes
already made an error is thrown. The whole transaction fails, not just
the transaction processing, and anything changed by the transaction
processor function before the error occurred will be rolled back.
发件人:https://hyperledger.github.io/composer/reference/js_scripts.html
我有一个包含资产的注册表。我需要添加新资产,然后更新注册表。资产是一种分配,您可以在其中将一个值从一个发送到另一个。如果接收资产不存在,则会使用分配的新值创建它,然后是从发送资产中获取的值。当我通过事务 .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 函数,新资产就会被添加。 如果之前在代码中添加了资产,为什么它无法更新资产?代码有什么问题吗?
在 Hyperledger Fabric(Hyperledger Composer 当前正在使用的)中,您无法从事务中读取自己的写入,这意味着您无法在同一事务中向注册表添加内容然后再读取它。
保罗是对的。而且我认为这与交易成功之前新资产如何没有真正完全提交到注册表有关:
Transaction processor functions will fail and roll back any changes already made an error is thrown. The whole transaction fails, not just the transaction processing, and anything changed by the transaction processor function before the error occurred will be rolled back.
发件人:https://hyperledger.github.io/composer/reference/js_scripts.html