2017-10-04 7 views
0

私はいくつかのセンサーからのデータストリームを持っており、ユーザーはこの受信データデータを処理するための簡単な関数を作成できるようにしたいと考えています。 ユーザーは、Webページのテキストフィールドを使用して関数を入力し、その関数をデータベースに保存します。着信データがあるときはいつでも、nodejsサービスはデータを受信して​​おり、データをデータベースに保存する前にユーザー定義関数によってデータを処理しています。nodejs内の文字列からJavaScript関数を実行

データベースからユーザー定義関数を実行するにはどうすればよいですか?

TTNとそのペイロード機能を知っている人にとって、これは基本的に私のアプリケーションのためにやりたいことです。 enter image description here

+2

VM APIの@helbのおかげ:https://nodejs.org/api/vm.html(または単に 'eval'が、それは実行するためのサンドボックスを持っていることは常に良いことですユーザー提供コード) – helb

答えて

0

解決策はnodejsにVM APIを使用することでした。 このスクリプトでちょっと遊んだことは助けになりました。

const util = require('util'); 
const vm = require('vm'); 

const sandbox = { 
    animal: 'cat', 
    count: 2 
}; 

const script = new vm.Script('count += 1; name = "kitty";'); 

const context = new vm.createContext(sandbox); 
for (let i = 0; i < 10; ++i) { 
    script.runInContext(context); 
} 

console.log(util.inspect(sandbox)); 

// { animal: 'cat', count: 12, name: 'kitty' } 

ソリューション

関連する問題