无法在Hyperledger Composer中更新Assts

时间:2018-02-15 07:49:33

标签: hyperledger-fabric hyperledger-composer

这里第一次当我调用updateRegistery时,只有auctionItem被更新为“Selling”,并且在超时1分钟后再次调用updateRegistery,这次不会更新“auctionItem”或“auction”。 没有.catch()函数被调用,这意味着所有的promise都被成功解析。 请告诉我哪里出错了?
作曲家版本:-v0.16.4

/**Invoked start the auction
 * @param {namespace.StartEnglishAuction} startEnglishAuction
 * @transaction
 */
function startEnglishAuction( startAuction ) {

    var NS = "namespace";
    var auction = startAuction.auction;
    var auctionCreateTime = startAuction.timestamp;

    if( auction.status == "FINISHED" ){
       console.log("Auction is ALready Over");
       return "Auction is ALready Over...!";
    }
    else if( auction.status == "IN_PROGRESS" ){
      console.log("Auction is ALready Running");
      return "Auction is Already Running...!";
    }

    //this updates my auctionItem status to "SELLING" but does not updates auction status in registry
    **auction.status = "IN_PROGRESS";
    auction.auctionItems[0].status = "SELLING";
    updateRegistery(auction,auction.auctionItems[0] );**

    var intervalId = setInterval( checkBidsInterval, 1000 );//checks if auction timeout has occured

    function checkBidsInterval(  ){//called every second after auction is created
      console.log("tick tick");
        var now = new Date().getTime();
        if( !auction.auctionItems[0].lastBidTimestamp  ){ //if no bid placed
            //nobody bought item
            var timeoutTime = new Date( auctionCreateTime );
            timeoutTime.setMinutes( timeoutTime.getMinutes() + 1 );
            console.log(" no bid waala case");
            if(  now >= timeoutTime.getTime() ){ 
                //this is called but updates nothing in registry      
                **auction.auctionItems[0].status = "UNSOLD";
                auction.status = "FINISHED";
                updateRegistery(auction,auction.auctionItems[0] );**
                clearInterval( intervalId );
            }

        }

        function sellItem( auction, auctionItem ){
            var factory = getFactory();
            auction.auctionItems[0].status = "SOLD";
          //  factory.newResource( NS, "EnglishAuctionItemSold" );
          console.log("item sold");
          return updateRegistery( auction, auctionItem );
        }

    }//end checkBidInterval

    function updateRegistery( auction, auctionItem ){
      return getAssetRegistry( NS + '.EnglishAuctionItem' )
        .then(function ( englishAuctionItemRegistery ) {
         console.log("rAuctionItem Updated Successfully.!");
         return englishAuctionItemRegistery.update( auctionItem );
      })
        .catch(function( error ){
        console.log("1error ::", error);
        return "fdf";
      })          
        .then(function( earrr ) {
        console.log("earrr", earrr);
        return getAssetRegistry( NS + '.EnglishAuction' );
      })
        .catch(function( error ){
        console.log("2error ::", error);
        return "fdf";
      })          
        .then(function( englishAuctionRegistery ) {
        // add the temp reading to the shipment
        console.log("rEnglishAuction Successfully.!");
        return englishAuctionRegistery.update(auction);
      })
        .catch(function( error ){
        console.log("3error ::", error);
        return "fdf";
      })  

    }  

}//end startEnglishAuction

1 个答案:

答案 0 :(得分:0)

没有模特很难看到。您还有非确定性代码(new Date()。getTime()),这可能意味着您的同事会对结果达成一致(不确定您在设置中有多少同伴)。

您可以尝试使用此链来查看两个注册表是否都在更新。

return getAssetRegistry( NS + '.EnglishAuctionItem' )
  .then(function ( englishAuctionItemRegistery ) {
     console.log("EnglishAuctionItem Updated Successfully.!");
     return englishAuctionItemRegistery.update( auctionItem ) ;
  })
  .then function() {
   return getAssetRegistry( NS + '.EnglishAuction' )
     .then(function ( englishAuctionRegistery ) {
           console.log("EnglishAuction Updated Successfully.!");
           return englishAuctionRegistery.update(auction);
      })
    .catch(function( error ) {
       console.log("Error", error);
  });

这里的类似例子

https://github.com/hyperledger/composer-sample-networks/blob/v0.16.x/packages/perishable-network/lib/logic.js#L85