程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了特定参与者的历史学家大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决特定参与者的历史学家?

开发过程中遇到特定参与者的历史学家的问题如何解决?下面主要结合日常开发的经验,给出你关于特定参与者的历史学家的解决方法建议,希望对你解决特定参与者的历史学家有所启发或帮助;

您可以将自v0.20以来的REST API调用的结果返回给调用的客户端应用程序,因此可以进行如下操作(未经测试,但是您知道了)。注意:您可以直接通过REST直接使用您的参数(或您为自己的业务网络创建的任何端点- 下面的示例是Trade-network)调用REST API结束(/ GET Trader ),而不是使用“只读”的示例如下所述的事务处理器端点,用于将更大的结果集返回到客户端应用程序。在文档中查看有关此内容的更多信息

使用API​​的NODE Js ClIEnt:

    const BusinessNetworkConnection = require('composer-clIEnt').businessNetworkConnection;

    const rp = require('request-promise');

    this.bizNetworkConnection = new BusinessNetworkConnection();
    this.cardname ='admin@mynet';
    this.businessNetworkIDentifIEr = 'mynet';

    this.bizNetworkConnection.connect(this.cardName)
    .then((result) => {

    //you can do ANYTHING HERE eg.

    })
    .catch((error) => {
    throw error;
    });

    // set up my read only transaction object - find the history of a particular Participant - note it Could equally be an Asset instead !

    var obj = {
        "$class": "org.example.Trading.MyPartHistory",
        "TradEID": "P1"
    };


    async function callPartHistory() {

    var options = {
        method: 'POST',
        uri: 'http://localhost:3000/API/MyPartHistory',
        body: obj,
        Json: true 
    };

    let results = await rp(options);
    //    console.log("Return value from REST API is " + results);
    console.log(" ");
    console.log(`PARTICIPANT HISTORY for Asset ID:  ${results[0].TradEID} is: `); 
    console.log("=============================================");

    for (const part of results) {
         console.log(`${part.TradEID}             ${part.namE}` );
    }
   }

   // Main

   callPartHistory();

//模型文件

@commit@R_772_5279@
@returns(Trader[])
transaction MyPartHistory {
o String TradEID
}

只读交易处理器代码(在“ logic.Js”中):

/**
 * Sample read-only transaction
 * @param {org.example.Trading.MyPartHistory} tx
 * @returns {org.example.Trading.Trader[]} All trxns  
 * @transaction
 */


async function participantHistory(tX) {

    const partID = tx.TradEID;
    const nativeSupport = tx.nativeSupport;
    // const partRegistry = await getParticipantRegistry('org.example.Trading.Trader')

    const nativeKey = getNativeAPI().createCompositeKey('Asset:org.example.Trading.Trader', [partID]);
    const iterator = await getNativeAPI().getHistoryForKey(nativeKey);
    let results = [];
    let res = {done : falsE};
    while (!res.donE) {
        res = await iterator.next();

        if (res && res.value && res.value.value) {
            let val = res.value.value.toString('utf8');
            if (val.length > 0) {
               console.log("@deBUG val is  " + val );
               results.push(JsON.parse(val));
            }
        }
        if (res && res.donE) {
            try {
                iterator.close();
            }
            catch (err) {
            }
        }
    }
    var newArray = [];
    for (const item of results) {
            newArray.push(getserializer().fromJsON(item));
    }
    console.log("@deBUG the results to be returned are as follows: ");

    return newArray; // returns something to my NodeJs clIEnt (called via REST API)
}

解决方法

有什么方法可以使用节点API获取Hyperledger-composer中特定参与者的Historian?

我正在使用Node API开发基于hyperledger-
composer的应用程序。我想在其个人资料中显示特定参与者的交易历史记录。我已经为此创建了permission.acl,并且在操场上运行良好。但是,当我从节点API访问历史记录器时,它将提供网络的完整历史记录器。我不知道该如何过滤参与者。

大佬总结

以上是大佬教程为你收集整理的特定参与者的历史学家全部内容,希望文章能够帮你解决特定参与者的历史学家所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: