2017-08-10 47 views
0

I创建一个名为record的资产,其中记录数据为String。在交易期间,我们希望在交易窗口中看到操场上的记录数据值并修改值。 我可以看到一个例子,他们将值从oldvalue更改为新值。在交易测试窗口中获取旧值

但是,我的情况我想在操场测试的提交交易期间首先看到数据并更改它。你可以请建议 另外,同样的问题,如果我想获得通过枚举定义的状态。请建议

asset Record identified by recordId { 
    o String recordId 
    o String data 
} 

transaction UpdateRecord{ 
--> Record asset 
    o String newData 

} 

/** 
* Update Record 
* @param {org.acme.model.UpdateRecord} updateRecord - the updateRecord transaction 
* @transaction 
*/ 
function UpdateRecord(record) { 
    record.asset.data = record.newData; 
    return getAssetRegistry('org.acme.model.Record') 
     .then(function (assetRegistry) { 
      return assetRegistry.update(record.asset); 
     }); 
} 

回答

0

世界状态数据库在任何时候都是最新的分类账状态 - 快照,如果你喜欢的话。一旦事务被认可然后被提交,它就会被更新(它将不会在你的事务处理器中的更新调用之后立即处于该状态 - 所以如果你从世界状态中检索一个值(在你的函数代码中),它将会当然,任何交易处理函数抛出的异常都会导致整个交易回滚,而不会改变区块链或世界状态

所以如果你执行一个事务(添加记录),您应该获取创建的事务id,例如添加资产,然后当您使用事务(通过操场,通过API,通过REST)更新该资产以执行您的txn处理器时,那么一旦已完成,您将获得另一个交易ID - 该功能将根据您的代码更新原始资产。要查看“记录数据“ - 您的定义中的一项资产,只需使用首先连接到您在游乐场的国阵的”测试“选项卡,您就可以看到”历史记录“(在撰写本文时仍在制定中),以查看您进行的交易的历史。要查看当前事务的详细信息,请使用REST APIS(使用composer-rest-server为您的业务网络创建)或通过REST的系统事务ID来查看单个事务,如RC