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 /")如果您碰巧编译并运行它,您将不会感到好笑!
此外,您可以想象,每次要查找变量时都编译新代码会很慢。
因此,尽管您在技术上可以做到这一点,但我建议您不要这样做,而是采用更安全、更快捷的方式将您的配置定义为对象。
添加回答
举报
