あなたの API ノードの MongoDB インスタンスへ接続する方法の学習
注釈
これは上級機能です
REST ゲートウェイ は幅広いエンドポイントを提供しているので、API ノードの内部データベースに直接接続する必要はありません。
しかし、新規に Symbol のプラグインを開発している場合や広範なブロックチェーンデータを分析している場合は デバッグ目的 で MongoDB に直接接続する必要があるかもしれません。
このガイドのでは、API ノードデータベースインスタンスに接続し、いくつかの基本的なクエリを実行します。
Docker 上で API または Dual ノードが起動 していて データベースのポートが開いている (次のセクションを参照)
ノードの立ち上げ ガイドでは symbol-bootstrap
を使用して、必要なノードサービス (catapult-client, API エンドポイント, データベースなど) をインスタンス化して実行しました。セキュリティ上の理由から、これらのサービスはすべて Docker コンテナー内で実行され、パブリックエンドポイントを除いて、外部からは分離されています。
これは API ノードがブロックチェーンの状態をキャッシュするために使用する MongoDB データベースへ デフォルトではアクセスできない ことを意味します。内部ポートをホストに転送するには symbol-bootstrap
に次の行を含む カスタムプリセットファイル を指定します。
databases:
- openPort: true
そして symbol-bootstrap
で構成する際に、このファイルを使用します。例:
symbol-bootstrap start -p testnet -a dual -c custom_parameters.yml
Previously configured nodes may need to be stopped and restarted with the --upgrade
argument in order to process the updated custom yml file:
symbol-bootstrap stop
symbol-bootstrap start -p testnet -a dual -c custom_parameters.yml --upgrade
警告
This will make the database accessible from the host's TCP port 27017
and it will be extremely vulnerable if this port is publicly exposed, so please be careful. This feature is only recommended for development purposes.
このチュートリアルでは Robo 3T (前 RoboMongo) を使用します。データベースと対話する、クロスプラットフォームの MongoDB 管理ツールです。
Robo 3T を ここ からダウンロードします。
インストーラを開き、手順に従います。
問題がある場合は 公式のインストールガイド に従います。
Robo 3T を起動したら、 "Create" リンクをクリックして新しい接続を追加します。
"Connection" タブで次の詳細を入力します。
Type: 直接接続
Name: my-node
Address: localhost
Port: 27017
ノードがローカルで動作している場合は、 "Connect" をクリックして、次のセクション Querying MongoDB へ進んでください。
または、 virtual private server (VPS) 上でノードが動作している場合は、あなたのコンピュータとサーバ間にトンネルを通してください。
SSH tab へ移動しサーバの詳細を追加します:
SSH Address, username, authentication を置き換えてください。
"Connect" をクリックすると "catapult" と名付けられたデータベース配下に MongoDB のコレクションが確認できます。
注釈
このメソッドはデータベースから読み取るためにのみ使用します。MongoDB でドキュメントを直接変更しないでください。
左側のサイドバーからクエリを実行するコレクションを開きます。
2. In most cases, you may want to filter a set of entries by one of its attributes. To filter, for example, a given transaction type, write a query with the following format on Robo 3T shell:
db.getCollection('transactions').find( { "transaction.type": 16724})
より応用的なクエリを実行するには Robo3T ドキュメントを参照してください。
クエリを実行するために "Play" ボタンをクリックします。