Node.js で Wave Financial のデータを MySQL データベースとしてクエリ
Wave Financial 用の ODBC Driver の SQL Gateway を使用すると、MySQL インターフェース経由でWave Financial のデータをクエリできます。以下の手順に従って、SQL Gateway の MySQL リモーティングサービスを起動し、Node.js からクエリを開始してください。
Wave Financial のデータに接続
まだ行っていない場合は、データソース名(DSN)で必要な接続プロパティの値を指定してください。組み込みの Microsoft ODBC データソースアドミニストレーターを使用して DSN を設定できます。これはドライバーインストールの最後のステップでもあります。Microsoft ODBC データソースアドミニストレーターを使用して DSN を作成・設定する方法については、ヘルプドキュメントの「はじめに」の章を参照してください。
Wave Financial 接続プロパティの取得・設定方法
Wave Financial は、データに接続する手段として、API トークンを指定する方法とOAuth 認証情報を使用する方法の2つを提供しています。
API トークン
Wave Financial API トークンを取得するには:
- Wave Financial アカウントにログインします。
- 左ペインのManage Applications に移動します。
- トークンを作成するアプリケーションを選択します。最初にアプリケーションを作成する必要がある場合があります。
- API トークンを生成するには、Create token をクリックします。
OAuth
Wave Financial はOAuth 認証のみサポートします。すべてのOAuth フローで、この認証を有効にするにはAuthScheme をOAuth に設定する必要があります。ヘルプドキュメントでは、以下の3つの一般的な認証フローでのWave Financial への認証について詳しく説明しています。
- デスクトップ:ユーザーのローカルマシン上でのサーバーへの接続で、テストやプロトタイピングによく使用されます。組み込みOAuth またはカスタムOAuth で認証されます。
- Web:共有ウェブサイト経由でデータにアクセスします。カスタムOAuth でのみ認証されます。
- ヘッドレスサーバー:他のコンピュータやそのユーザーにサービスを提供する専用コンピュータで、モニタやキーボードなしで動作するように構成されています。組み込みOAuth またはカスタムOAuth で認証されます。
カスタムOAuth アプリケーションの作成についての情報と、組み込みOAuth 認証情報を持つ認証フローでもカスタムOAuth アプリケーションを作成したほうがよい場合の説明については、ヘルプドキュメント の「カスタムOAuth アプリケーションの作成」セクションを参照してください。
SQL Gateway を設定
SQL Gateway 概要を参照して、Wave Financial のデータ を仮想 MySQL データベースとして接続を設定してください。クライアントからの MySQL リクエストをリッスンする MySQL リモーティングサービスを設定します。サービスは SQL Gateway UI で設定できます。

Node.js から Wave Financial をクエリ
以下の例では、mysql モジュールを使用して Wave Financial への接続を定義し、クエリを実行する方法を示しています。以下の情報が必要です。
- ホスト名またはアドレス、およびポート:MySQL リモーティングサービスが MySQL 接続をリッスンしているマシンとポート
- ユーザー名とパスワード:SQL Gateway の Users タブで認証したユーザーのユーザー名とパスワード
- データベース名:MySQL リモーティングサービス用に設定した DSN
以下のコードでWave Financial のデータに接続し、クエリの実行を開始できます。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
database : 'CData WaveFinancial Sys',
port : '3306',
user : 'mysql_user',
password : 'test'
});
connection.connect();
connection.query('SELECT * FROM Invoices', function(err, rows, fields) {
if (err) throw err;
console.log(rows);
});
connection.end();