mongodb kvs for fabric-sdk-node
npm i fabric-sdk-kvs-mongo
- config your network definition to use mongodb credentialStore
# your network.yaml
client:
# Since the node.js SDK supports pluggable KV stores, the properties under "credentialStore"
# are implementation specific
credentialStore:
url: "mongodb://localhost:27017"
dbname: "org1"
collectionName: "credential"
# Specific to the CryptoSuite implementation. Software-based implementations like
# CryptoSuite_ECDSA_AES.js requires a key store. PKCS#11 based implementations does
# not.
cryptoStore:
# Specific to the underlying KeyValueStore that backs the crypto key store.
url: "mongodb://localhost:27017"
dbname: "org1"
collectionName: "crypto"
- config fabric-sdk-node to use fabric-ca-kvs-mongo
const Client = require('fabric-client');
// this code config the fabric-sdk-node to use fabric-sdk-kvs-mongo
Client.setConfigSetting('key-value-store', 'fabric-sdk-kvs-mongo');
// this load the network.yaml from step 1
const client = Client.loadFromConfig('<some-path-to-your-network.yaml>');
// init credential stores
await client.initCredentialStores();
// then it's done.
// Next time you just need to load this use again from state store
const user = await client.loadUserFromStateStore(username);
await client.setUserContext(user);
// do some invoke/query with this user's identity
// Enjoy!
# suppose you followed the instructions above and make no change.
# and you start your mongodb like this
mongodb:
container_name: mongo
image: mongo
ports:
- 27017:27017
use mongo shell to see what is in the credentials store.
$ mongo
> show dbs;
...
org1 0.000GB
org2 0.000GB
> use org1;
switched to db org1
> show collections;
credential
crypto
> db.credential.find();
> db.crypto.find();