刘巍峰 2020-04-19 18:15 采纳率: 0%
浏览 664

hyperledger fabric超级账本中使用putState无法保存数据?

最近在学习hyperledger fabric,遇到了好多坑。其中在链码中使用putState去保存一头猪的数据时,始终无法成功,但在初始化链码时却可以正常保存数据。
chaincode中保存猪的信息的函数:

//记录一头猪的信息
async recordPig(stub, args) {

     var pig={
            breed:"大白猪",          //猪的品种
            birthday: "2020-4-15",       //猪的出生日期
            feed: "s",           //猪饲料的品种
            drug: "a",           //养殖用药
            feederId: "但是",       //养殖工id
            farmId: "第三方",         //养殖场id
            weight:"sdf",         //猪的出厂体重
            health: "sdfs",         //猪的健康状态
            holder:"dsdf",
            state:"sdfs"//状态
        };
        await stub.putState('PIG'+3, Buffer.from(JSON.stringify(pig)));
        console.info('Added <--> ', pig);
}

server.js中的部分代码:

var query=async(fcn,args)=>{
    try{
        var state_store=await Fabric_Client.newDefaultKeyValueStore({path:store_path});
        fabric_client.setStateStore(state_store);
        var crypto_suite=Fabric_Client.newCryptoSuite();
        var crypto_store=Fabric_Client.newCryptoKeyStore({path:store_path});
        crypto_suite.setCryptoKeyStore(crypto_store);
        fabric_client.setCryptoSuite(crypto_suite);

        var user_from_store=await fabric_client.getUserContext('user1',true);

        if(user_from_store&&user_from_store.isEnrolled()){
            console.log('Successfully loaded user1 from persistence');
            member_user=user_from_store;
        }else{
            throw new Error('Failed to get user1... run registerUser.js');
        }

        const request={
            chaincodeId:'psctscc',
            fcn:fcn,    //修改为要调用的chaincode中的方法
            args:args
        };

        var query_responses=await channel.queryByChaincode(request);

        console.log("Query has completed, checking results");
        console.log(query_responses);
        console.log(query_responses.length);
        if(query_responses&&query_responses.length==1){

            if(query_responses[0] instanceof Error){

                console.error("error from query = ",query_responses[0]);
            }else{

                console.log("Response is ",query_responses[0].toString());
                return query_responses[0].toString();  
            }
        }else{

            console.log("No payloads were returned from query");
        }
    }catch(err){
        console.error('Failed to query successfully ::'+err);
    }
};

运行结果:
图片说明

  • 写回答

1条回答 默认 最新

  • asdhahaykk 2021-10-09 19:04
    关注

    我也有这个问题,不知道怎么解决

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!