IBM CloudのNode-REDからCloudantを利用する

Taiji
6 min readDec 2, 2020

はじめに

Node-REDからCloudantを使ってデータ処理をする方法というのは、とても簡単なのですが、簡単が故にあまり手順なども公開されていないように感じたのでここにまとめておきます。

環境

ここでは、以下の環境が作成済みであることを前提に進めます。

・IBM Cloud上にNode-REDが作成されている・CloudantのサービスがNode-REDへ接続されている

通常はIBM Cloud上でNode-REDを作成すると、必ずCloudantと接続されるので問題はないかと思います。

CloudantにDBを作成する

まず、Node-REDからデータを登録や検索するためのデータベースを作成します。IBM Cloudのダッシュボード上のリソースリストから、Cloudantサービスをクリックします。
Cloudantサービスの管理画面にCloudantダッシュボードの起動ボタンがありますのでそれをクリックします。

別ウィンドウでCloudantのダッシュボードが開きますので、画面右上にあるCreate Databaseボタンをクリックしてデータベースを作成します。

これでOKです。

Node-REDでフロー作成

Node-REDでは、以下のようなフローを作ってみます。

上段のフローでは、injectノードとcloudant outノードをつなげています。injectノードでは、Cloudantへ格納したいデータをJSON形式で設定しておきます。

下段のフローでは、injectノードは単なるトリガーで、cloudant inノードで値を取得し、debugノードでその値を出力しています。

このフローの定義はこちらになりますので、インポートしてご利用ください。(DBへの接続情報はご自身のものへ合わせてください)

[
{
"id": "aa58139e.6b301",
"type": "tab",
"label": "Flow 2",
"disabled": false,
"info": ""
},
{
"id": "1a31d24d.11e18e",
"type": "inject",
"z": "aa58139e.6b301",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"name\":\"Taiji\",\"id\":\"12345\"}",
"payloadType": "json",
"x": 120,
"y": 140,
"wires": [
[
"6784b7d8.2e6718"
]
]
},
{
"id": "6784b7d8.2e6718",
"type": "cloudant out",
"z": "aa58139e.6b301",
"name": "",
"cloudant": "",
"database": "DB名",
"service": "Cloudantサービス名",
"payonly": false,
"operation": "insert",
"x": 400,
"y": 140,
"wires": []
},
{
"id": "930e1a8d.754b18",
"type": "inject",
"z": "aa58139e.6b301",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 120,
"y": 220,
"wires": [
[
"3be0e0b1.f308e"
]
]
},
{
"id": "3be0e0b1.f308e",
"type": "cloudant in",
"z": "aa58139e.6b301",
"name": "",
"cloudant": "",
"database": "DB名",
"service": "Cloudantサービス名",
"search": "_all_",
"design": "",
"index": "",
"x": 380,
"y": 220,
"wires": [
[
"5e82632a.d82f9c"
]
]
},
{
"id": "5e82632a.d82f9c",
"type": "debug",
"z": "aa58139e.6b301",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 600,
"y": 220,
"wires": []
}
]

これでDeployボタンを押してデプロイを完了してください。

実行

先ず上段のフローから実行してください。Node-RED上にはSuccessfulのメッセージが出ます。Cloudantのダッシュボードを見ると、対象のデータベースへJSONデータが格納されたのが確認できます。

次に、下段のフローを実行してください。Node-REDのデバッグウィンドウに、取得したオブジェクトが表示されることが確認できます。

まとめ

いかがでしょうか?非常に簡単に、データの永続化及び取得処理ができたのではないでしょうか。
これが基本操作になりますので、これを基にいろいろと試してみてくださいね。

--

--

Taiji

Datadog Senior Developer Advocate | Ex-OutSystems Dev Community Advocate | Ex-IBM Dev Advocate | Microsoft MVP | 筑波大学、名城大学非常勤講師 | 記事は個人の見解であり、所属する組織とは関係ありません。