1 回答

TA貢獻1866條經驗 獲得超5個贊
一個警告;我認為其他答案是正確的,正確的方法是讓您的配置成為一個對象,您可以在其中查找值。
這意味著您的配置代碼,而不是看起來像:
const tractList = 'select meta().id value_key, name from Contacts where _type = "tract_info" order by name';
...
應該看起來更像:
const config: {
tractList: 'select meta().id value_key, name from Contacts where _type = "tract_info" order by name',
...
}
這意味著您可以像這樣相當安全地查找它:
let query = config[data[i].queryname];
通常的方法是從模塊中導出這個 congi 對象,這樣你就可以在任何地方導入它。
因此,要回答您的實際問題,如果您 100% 確定您要查找的變量在范圍內,并且 1000% 確定查找變量是正確的,您可以評估查找變量。
var query = eval(data[i].queryname);
這是不安全的原因是 eval 只會編譯該函數中的任何內容并運行它!可以想象,如果有人不小心改變了他們的查詢字符串,而不是'tractList'它包含一些類似的東西,require("child_process").exec("rm -rf /")如果您碰巧編譯并運行它,您將不會感到好笑!
此外,您可以想象,每次要查找變量時都編譯新代碼會很慢。
因此,盡管您在技術上可以做到這一點,但我建議您不要這樣做,而是采用更安全、更快捷的方式將您的配置定義為對象。
添加回答
舉報