2017-01-10 9 views
1

コンフィグレーション時にノードに非同期データを送信したい。私は を実行して、SQLリクエストを実行して、いくつかのデータをリストします。ノード作成でコンフィグレーションでデータを送信する

  • 、サーバー側の機能は、それが完了だとき、コールバックは、データを受信したノード構成ノード構成で
  • 、にデータを送信
  • を行い、リストが作成され

また、バイナリは各x分ずつデータベースを要求し、各ノードが作成時に使用する キャッシュを作成することができます。これにより、コードが非同期でも「ライブ更新」されなくても削除されます。実際に

私は、クエリを作成し、以下のようにこれを追加しましたので、私はこだわっている:

module.exports = function(RED) { 
    "use strict"; 
    var db = require("../bin/database")(RED); 

    function testNode(n) { 
     // Create a RED node 
     RED.nodes.createNode(this,n); 

     // Store local copies of the node configuration (as defined in the 
.html 
     var node = this; 
     var context = this.context(); 


     this.on('input', function (msg) { 
      node.send({payload: true}); 
     }); 
    } 

    RED.nodes.registerType("SQLTEST",testNode); 
} 

しかし、私は構成ノードにデータを渡す方法がわかりません。私は Socket.IOのことを考えましたが、これは良い考えですか?あなたはどんな解決法を知っていますか?

答えて

2

Node-REDで使用される標準モデルは、ノードが必要な情報を照会するために使用できる独自の管理HTTPエンドポイントを登録するためのものです。これは、シリアルノードで実際に表示されます。

[シリアルノード編集]ダイアログボックスには、現在接続されているシリアルデバイスのリストが表示されます。

ノードは、ここでは、管理エンドポイントを登録します。https://github.com/node-red/node-red-nodes/blob/83ea35d0ddd70803d97ccf488d675d6837beeceb/io/serialport/25-serial.js#L283

RED.httpAdmin.get("/serialports", RED.auth.needsPermission('serial.read'), function(req,res) { 
    serialp.list(function (err, ports) { 
     res.json(ports); 
    }); 
}); 

キーポイント:

  • は、ノード・タイプに名前空間されたURLを選択 - これはneedsPermissionミドルウェアがあるの衝突
  • を回避します認証されたユーザーだけがエンドポイントにアクセスできるようにします。許可は、<node-type>.readの形式である必要があります。

その編集ダイアログは、ここからそのエンドポイントを照会します。https://github.com/node-red/node-red-nodes/blob/83ea35d0ddd70803d97ccf488d675d6837beeceb/io/serialport/25-serial.html#L240

$.getJSON('serialports',function(data) { 
    //... does stuff with data 
}); 

キーポイント:ここ

  • URLが/で始めてはいけません。これにより、編集者が提供されている場所に関係なくリクエストが確実に行われます。/から配信されているとはみなせません。
+0

Knolleary、ノードTYPEとは、それはノードを登録しているということですか?私は "RED.nodes.registerType( 'customnodeList'を持っているので、needpermissionはcustomnodeList.readになりますか? 私はこれを試しましたが、URLにアクセスしようとするといつも私は無許可になります –

+0

この最後のコメントを無視して、それに直接アクセスすることはできません、あなたはJSONを使ってそれを使用して感謝の仕事をしなければなりません –