由于在test-netword在执行./network.sh deployCC -l javascript 已经部署好了链码,因此我们直接查询已经安装的链码就好。
同前两节一样,我们重点来讲解下查询链码的代码
打开$GOPATH/src/github.com/hyperledger/fabric-samples/fabcar/javascript/query.js 文件,我们来看看代码。
首先下面部分代码同admin基本一样,不在详述。
`
'use strict';
const { Gateway, Wallets } = require('fabric-network');
const fs = require('fs');
const path = require('path');
async function main() {
try {
// 业务内容部分
} catch (error) {
console.error(`Failed to evaluate transaction: ${error}`);
process.exit(1);
}
}
main();
`
我们重点来看看业务内容部分
第一部分:加载test-network网络中组织1的的连接配置信息
同上一节一样,它获取到connection-org1.json的参数并转为json格式
`
const ccpPath = path.resolve(__dirname, '..', '..', 'test-network', 'organizations', 'peerOrganizations', 'org1.example.com', 'connection-org1.json');
const ccp = JSON.parse(fs.readFileSync(ccpPath, 'utf8'));
`
第二部分:创建一个新的基于文件系统的钱包来管理身份
同上一节,先获取到钱包的目录路径并实例化一个钱包对象
`
const walletPath = path.join(process.cwd(), 'wallet');
const wallet = await Wallets.newFileSystemWallet(walletPath);
console.log(`Wallet path: ${walletPath}`);
`
第三部分:查看我们是否已经注册了用户用户
判断wallet目录下是否已经存在appUser.id这个文件,存在就表示这个用户已经注册过
`
const identity = await wallet.get('appUser');
if (!identity) {
console.log('An identity for the user "appUser" does not exist in the wallet');
console.log('Run the registerUser.js application before retrying');
return;
}
`
如果还没有注册,会提示先注册用户再执行这一步。
第四部分:创建一个新的网关并连接到我们的对等(peer)节点
根据ccp的参数可知,它连接的的peer节点是网址为org1.example.com的节点
`
const gateway = new Gateway();
await gateway.connect(ccp, { wallet, identity: 'appUser', discovery: { enabled: true, asLocalhost: true } });
`
第五部分:连接到通道上
我们之前使用createChannel命令生成了默认的mychannel通道,并在上面部署了链码,因此我们需要先连接到mychannel的通道上
`
const network = await gateway.getNetwork('mychannel');
`
第六部分:连接到合约上
连接到我们之前部署到mychannel通道上的fabcar合约,这个合约是之前通过/network.sh deployCC -l javascript命令部署的
`
const contract = network.getContract('fabcar');
`
第七部分:执行合约的查询方法
fabcar合约提供了两个查询方法
queryCar 方法是查询某个编号的汽车,它需要一个参数,如('queryCar', 'CAR4')
queryAllCars 方法是查询所有的汽车列表,它不需要参数
下面我们直接以queryAllCars为例子的写法
`
const result = await contract.evaluateTransaction('queryAllCars');
console.log(`Transaction has been evaluated, result is: ${result.toString()}`);
`
本文由小韦云原创,转载请注明出处:https://www.bctos.cn/doc/4/1840,否则追究其法律责任
网友评论