知乎专栏 | 多维度架构 |
[root@localhost token]# cat queryToken.js 'use strict'; var Fabric_Client = require('fabric-client'); var path = require('path'); var util = require('util'); var os = require('os'); // var fabric_client = new Fabric_Client(); // setup the fabric network var channel = fabric_client.newChannel('mychannel'); var peer = fabric_client.newPeer('grpc://localhost:7051'); channel.addPeer(peer); var member_user = null; var store_path = path.join(__dirname, 'hfc-key-store'); console.log('Store path:'+store_path); var tx_id = null; Fabric_Client.newDefaultKeyValueStore({ path: store_path }).then((state_store) => { 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); return fabric_client.getUserContext('user1', true); }).then((user_from_store) => { 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: 'token3', fcn: 'showAccount', args: ['coinbase'] }; // send the query proposal to the peer return channel.queryByChaincode(request); }).then((query_responses) => { console.log("Query has completed, checking results"); 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()); } } else { console.log("No payloads were returned from query"); } }).catch((err) => { console.error('Failed to query successfully :: ' + err); });
核心代码
const request = { chaincodeId: 'token3', // 链码名称 fcn: 'showAccount', //调用方法 args: ['coinbase'] // 传递参数 };
运行结果
[root@localhost token]# node queryToken.js Store path:/root/fabric-samples/fabcar/hfc-key-store Successfully loaded user1 from persistence Query has completed, checking results Response is {"BalanceOf":{},"Frozen":false,"Name":"coinbase"}