2017-10-04 142 views
0

我有一些來自幾個傳感器的數據流,我希望我的用戶能夠創建處理此傳入數據數據的簡單函數。 用戶通過網頁上的文本字段鍵入功能,然後將該功能保存到數據庫中。無論何時有傳入數據,nodejs服務都會接收數據並通過用戶定義的函數處理數據,然後將數據保存到數據庫中。通過nodejs中的字符串執行JavaScript函數

如何從數據庫執行用戶定義的函數?

對於那些瞭解TTN及其有效載荷功能的人來說,這基本上是我想爲我的應用程序做的事情。 enter image description here

+2

VM API:https://nodejs.org/api/vm.html(或只是'eval',但它總是好的執行沙箱用戶提供的代碼) – helb

回答

0

解決方案是使用VM API作爲nodejs。 用這個腳本播放一點點幫助了很多。

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' } 

感謝@helb爲解決