how to define BusinessNetworkConnection in hyperle

2019-08-12 06:20发布

In my hyperledger-composer app, I have a transaction processor:

async function doSomething(transaction) {

    //some code


    // the following line results in error message:
    const connection = new BusinessNetworkConnection();
    await connection.connect('admin@tmy-network');
    const result = await connection.query(selectPatientByEmail, { inputValue: email });

    //some more code

}

However, the line

const connection = new BusinessNetworkConnection();

causes the following error messsage:

ReferenceError: BusinessNetworkConnection is not defined

How can I define the BusinessNetworkConnection?

*******************************UPDATE**************************************

Following the comment by Paul O'Mahony, I used the following line of code in my transaction processor function (in order to get the patient with the email address 'adam@gmail.com'):

let result = await query('selectPatientByEmail', {
    "email": "adam@gmail.com"    
});

The query is defined in the queries.qry file as follows:

query selectPatientByEmail {
    description: "Select the patient with the given email address"
    statement:
        SELECT org.comp.app.Patient
            WHERE (email == _$email)
}

However, the query returns "undefined" (i.e. variable "result" is undefined) .

What for god's sake is wrong with the code? I just can't see what might be the causing this behaviour.

***************************Update2*****************************************

I have to correct myself ... the query returns something ... but when I want to access the id of the returned patient, this is not possible. That is,

result.id is "undefined"

How can I access the id of the patient returned?

1条回答
再贱就再见
2楼-- · 2019-08-12 06:41

this is because you are (above) writing client code inside a native transaction function - you don't need to set these. Transaction processor functions are automatically invoked by the runtime when transactions are submitted (eg using the BusinessNetworkConnection API under the covers, but it is already part of the transaction - you don't need to specify) . See https://hyperledger.github.io/composer/latest/reference/js_scripts for more info - and the sample networks for common use cases and examples -> https://github.com/hyperledger/composer-sample-networks/tree/master/packages/

查看更多
登录 后发表回答