To call the Hyperledger Fabric API in a transaction processor function of composer
, the function getNativeAPI
must be called. getNativeAPI
allow users to call directly of the Fabric shim API
which provides the APIs for application developers to implement "Smart Contracts" for the Hyperledger Fabric backend, also known as Chaincodes
.
Here is a sample example of using getNativeAPI
in composer which called the Hyperledger Fabric API function getHistoryForKey
to returns the history of a specified asset as an iterator. The transaction processor function then stores the returned data in an array.
async function simpleNativeHistoryTransaction (transaction) {
const id = transaction.assetId;
const nativeSupport = transaction.nativeSupport;
const nativeKey = getNativeAPI().createCompositeKey('Asset:systest.transactions.SimpleStringAsset', [id]);
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) {
results.push(JSON.parse(val));
}
}
if (res && res.done) {
try {
iterator.close();
}
catch (err) {
}
}
}
}
Remember: The getState
and putState
Hyperledger Fabric API functions will bypass the Hyperledger Composer access control rules.
Some resource :
Hope these will help you to understand.