# Node.JS

Driver (opens new window)

# インストール

GridDB c_client(Nodejsパッケージを使用するための前提条件)は次の場所にあります :https://github.com/griddb/c_client (opens new window) 。 Node.jsパッケージと同様に、c_clientのインストールも簡素化されたものがあります。 RPMのダウンロードはこちら (opens new window)。 最新のRPMをwgetして開始します。

$ wget \
https://github.com/griddb/c_client/releases/download/v4.2.0/griddb_c_client-4.2.0-1.linux.x86_64.rpm

次に、rpmをインストールします。

$ sudo rpm -ivh griddb_c_client-4.2.0-1.linux.x86_64.rpm

これでc_clientが/usr/ディレクトリにインストールされ、準備が整いました。 Node Package ManagerによりNodejsクライアントを簡単にインストールすることができるようになりました。Node Package Managerを使わずにインストールする場合は、新しいディレクトリとnpm initを作成します。 これにより、プロジェクトの基礎の枠組みができ、node_modulesディレクトリが作成されます。 完了したら、次に進みます。

$ npm i griddb_node

これで、GridDB Node.jsクライアントがインストールされ、使用できる状態になりました。 注意点として、クライアントにはNode.jsバージョン10が必要です。別のプロジェクトで別のバージョンのNode.jsを使用している場合や最新の何かを使用している場合、nvmを使用することをお勧めします。 Node Version Managerは、bashスクリプトで、Node.jsのバージョン管理に役立ちます。 たとえば、今、バージョン10が必要なので、次のように入力します。

$ nvm install 10.16

次に、

$ nvm use 10.16

次のコマンドにて正しくインストールされたことを確認してください。

$ node -v
 v10.16.0 

これで完了です。 これで、GridDBでJavaScriptを使用する準備がほぼ整いました。 最後のステップは、LD_LIBRARYにc_clientインストールパスを指定することです。

$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/griddb_c_client-4.2-0/lib/

これで、GridDBクラスターでJavaScriptを実行できるようになりました。

# 使用法

クライアントを使用するには、griddbライブラリをプログラムにインポートします。

const griddb = require('griddb_node');
const fs = require('fs');

実際のクラスターを定義するには、次のようにします。

const factory = griddb.StoreFactory.getInstance();
        const store = factory.getStore({
            "host": '239.0.0.1',
            "port": 31999,
            "clusterName": "defaultCluster",
            "username": "admin",
            "password": "admin"
        });

コンテナの作成とスキーマの定義も簡単に行うことができます(コレクションコンテナ)。

const colConInfo = new griddb.ContainerInfo({
            'name': "Person",
            'columnInfoList': [
                ["name", griddb.Type.STRING],
                ["age", griddb.Type.INTEGER],
            ],
            'type': griddb.ContainerType.COLLECTION, 'rowKey': true
        });

Time Series コンテナ:

var timeConInfo = new griddb.ContainerInfo({
        'name': "HeartRate",
        'columnInfoList': [
            ["timestamp", griddb.Type.TIMESTAMP],
            ["heartRate", griddb.Type.INTEGER],
            ["activity", griddb.Type.STRING]
        ],
        'type': griddb.ContainerType.TIME_SERIES, 'rowKey': true
    });

そして、実際にコンテナにデータを入力(とクエリ)するには、次のようにします。

let time_series;
        store.putContainer(timeConInfo, false)
            .then(ts => {
                time_series = ts;
                return ts.put([new Date(), 60, 'resting']);
            })
            .then(() => {
                query = time_series.query("select * where timestamp > TIMESTAMPADD(HOUR, NOW(), -6)");
                return query.fetch();
            })
            .then(rowset => {
                while (rowset.hasNext()) {
                    var row = rowset.next();
                    console.log("Time =", row[0], "Heart Rate =", row[1].toString(), "Activity =", row[2]);
                }
            })
            .catch(err => {
                if (err.constructor.name == "GSException") {
                    for (var i = 0; i < err.getErrorStackSize(); i++) {
                        console.log("[", i, "]");
                        console.log(err.getErrorCode(i));
                        console.log(err.getMessage(i));
                    }
                } else {
                    console.log(err);
                }
            });

# おわりに

Node.jsの起動および実行にかかるプロセスが簡略化されたことで、Node.jsを利用するプロジェクトが今後増えていくことを期待しています。 使用法の章で使用したソースコードの全体をご覧になりたい場合は、こちら (opens new window)からソースファイルをダウンロードしてください。