いくつかのノードは構成情報を共有する必要があります。 たとえばMQTT InおよびMQTT Outノードは、MQTTブローカーの構成を共有し、接続をプールすることができます。 設定ノードはデフォルトでグローバルにスコープされます。 つまり、フロー間で状態が共有されます。
設定ノードは、他のノードと同じ方法で定義されます。 2つの重要な違いがあります:
category
プロパティをconfig
にセットします。<input>
要素はnode-config-input-<propertyname>
というID属性を持っています。<script type="text/javascript">
RED.nodes.registerType('remote-server',{
category: 'config',
defaults: {
host: {value:"localhost",required:true},
port: {value:1234,required:true,validate:RED.validators.number()},
},
label: function() {
return this.host+":"+this.port;
}
});
</script>
<script type="text/html" data-template-name="remote-server">
<div class="form-row">
<label for="node-config-input-host"><i class="fa fa-bookmark"></i> Host</label>
<input type="text" id="node-config-input-host">
</div>
<div class="form-row">
<label for="node-config-input-port"><i class="fa fa-bookmark"></i> Port</label>
<input type="text" id="node-config-input-port">
</div>
</script>
module.exports = function(RED) {
function RemoteServerNode(n) {
RED.nodes.createNode(this,n);
this.host = n.host;
this.port = n.port;
}
RED.nodes.registerType("remote-server",RemoteServerNode);
}
この例では、ノードは構成の単純なコンテナとして機能します。 実際の実行動作はありません。
設定ノードの一般的な使い方は、リモートシステムへの共有接続を表すことです。
その場合、設定ノードは接続を作成し、
設定ノードを使用するノードが接続を利用できるようにすることもできます。
このような場合、設定ノードは、
ノードが停止したときに切断するというclose
イベントも処理する必要があります。
ノードは自身が利用する設定ノードを登録するには、
設定ノードのタイプをtype
属性に設定したプロパティをdefaults
配列に追加します。
defaults: {
server: {value:"", type:"remote-server"},
},
他のプロパティと同様に、
エディタはnode-input-<propertyname>
というID属性を持つ編集テンプレート内の<input>
を探します。
他のプロパティとは異なり、エディタはこの<input>
要素を<select>
要素で置き換えます。
この要素には、設定ノードの利用可能なインスタンスが設定されており、
また設定ノードの編集ダイアログを開くためのボタンが存在します。
ノードはこのプロパティを使用して、ランタイム内の設定ノードにアクセスできます。
module.exports = function(RED) {
function MyNode(config) {
RED.nodes.createNode(this,config);
// Retrieve the config node
this.server = RED.nodes.getNode(config.server);
if (this.server) {
// Do something with:
// this.server.host
// this.server.post
} else {
// No config node configured
}
}
RED.nodes.registerType("my-node",MyNode);
}
Node-RED: Low-code programming for event-driven applications.
Copyright OpenJS Foundation and Node-RED contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
The OpenJS Foundation | Terms of Use | Privacy Policy | OpenJS Foundation Bylaws | Trademark Policy | Trademark List | Cookie Policy