簡體   English   中英

從 nodejs 中的字符串執行 JavaScript 函數

[英]Execute JavaScript functions from a string in nodejs

我有來自幾個傳感器的數據流,我希望我的用戶能夠創建簡單的函數來處理這些傳入的數據數據。 用戶通過網頁上的文本字段輸入函數,然后將函數保存到數據庫中。 每當有傳入數據時,nodejs 服務都會接收數據並在將數據保存到數據庫之前通過用戶定義的函數處理數據。

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

對於那些了解 TTN 及其有效載荷功能的人來說,這基本上就是我想要為我的應用程序做的事情。 在此處輸入圖片說明

解決方案是將 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 的解決方案

此外,內置的 eval 函數,

像:

primes = [ 2, 3, 5, 7, 11 ]
subset = eval('primes.filter(each => each > 5)')
console.log(subset)

##outputs [ 7, 11 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM